/*
 * Copyright 2015 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */
#include "include/core/SkPathBuilder.h"
#include "src/core/SkPathPriv.h"
#include "tests/Test.h"

DEF_TEST(IsClosedSingleContourTest, reporter) {
    SkPathBuilder p;
    REPORTER_ASSERT(reporter, !SkPathPriv::IsClosedSingleContour(p.detach()));

    p.close();
    REPORTER_ASSERT(reporter, !SkPathPriv::IsClosedSingleContour(p.detach()));

    p.moveTo(10, 10);
    p.close();
    REPORTER_ASSERT(reporter, SkPathPriv::IsClosedSingleContour(p.detach()));

    p.moveTo(10, 10);
    p.lineTo(20, 20);
    p.close();
    REPORTER_ASSERT(reporter, SkPathPriv::IsClosedSingleContour(p.detach()));

    p.moveTo(10, 10);
    p.lineTo(20, 20);
    p.quadTo(30, 30, 40, 40);
    p.cubicTo(50, 50, 60, 60, 70, 70);
    p.conicTo(30, 30, 40, 40, 0.5);
    p.close();
    REPORTER_ASSERT(reporter, SkPathPriv::IsClosedSingleContour(p.detach()));

    p.moveTo(10, 10);
    p.lineTo(20, 20);
    p.lineTo(20, 30);
    REPORTER_ASSERT(reporter, !SkPathPriv::IsClosedSingleContour(p.detach()));

    p.moveTo(10, 10);
    p.lineTo(20, 20);
    p.moveTo(10, 10);
    p.lineTo(20, 30);
    p.close();
    REPORTER_ASSERT(reporter, !SkPathPriv::IsClosedSingleContour(p.detach()));

    p.moveTo(10, 10);
    p.lineTo(20, 20);
    p.close();
    p.lineTo(20, 30);
    p.close();
    REPORTER_ASSERT(reporter, !SkPathPriv::IsClosedSingleContour(p.detach()));
}
