void object::test<1>()
    {
        CoordinateSequenceAutoPtr cs(csFactory->create((size_t)0, 2));

        ensure(nullptr != cs.get());

        geos::geom::Coordinate c0(0, 0);
        geos::geom::Coordinate c1(0, 0);

        cs->add(c0);
        cs->add(c1);

        ensure_equals(cs->size(), 2u);

        SegmentStringAutoPtr ss(makeSegmentString(cs.release()));
        ensure(nullptr != ss.get());

        ensure_equals(ss->size(), 2u);

        ensure_equals(ss->getData(), (void*)nullptr);

        ensure_equals(ss->getCoordinate(0), c0);

        ensure_equals(ss->getCoordinate(1), c1);

        ensure_equals(ss->isClosed(), true);

        ensure_equals(ss->getNodeList().size(), 0u);

        ensure_equals(ss->getSegmentOctant(0), 0);
    }
void object::test<2>()
{
    CoordinateSequenceAutoPtr cs(csFactory->create((size_t)0, 2));

    ensure(0 != cs.get());

    geos::geom::Coordinate c0(0, 0);
    geos::geom::Coordinate c1(1, 0);

    cs->add(c0);
    cs->add(c1);

    ensure_equals(cs->size(), 2u);

    SegmentStringAutoPtr ss(makeSegmentString(cs.get()));
    ensure(0 != ss.get());

    ensure_equals(ss->size(), 2u);

    ensure_equals(ss->getData(), (void*)0);

    ensure_equals(ss->getCoordinates(), cs.get());

    ensure_equals(ss->getCoordinate(0), c0);

    ensure_equals(ss->getCoordinate(1), c1);

    ensure_equals(ss->isClosed(), false);

    ensure_equals(ss->getSegmentOctant(0), 0);

}
    void object::test<5>()
    {
        geos::geom::Coordinate p0(0, 0);
        geos::geom::Coordinate p1(10, 0);


        CoordinateSequenceAutoPtr cs(csFactory->create((size_t)0, 2));
        cs->add(p0);
        cs->add(p1);

        SegmentStringAutoPtr ss(makeSegmentString(cs.release()));

        ensure_equals(ss->getNodeList().size(), 0u);

        // the intersection is invalid, but SegmentString trusts us
        ss->addIntersection(p0, 0);
        ensure_equals(ss->getNodeList().size(), 1u);

        // This node is already present, so shouldn't be
        // accepted as a new one
        ss->addIntersection(p0, 0);
        ensure_equals(ss->getNodeList().size(), 1u);

        ss->addIntersection(p1, 0);
        ensure_equals(ss->getNodeList().size(), 2u);

        ss->addIntersection(p1, 0);
        ensure_equals(ss->getNodeList().size(), 2u);

        ss->addIntersection(p0, 0);
        ensure_equals(ss->getNodeList().size(), 2u);

    }
void object::test<1>()
{
    CoordinateSequenceAutoPtr cs(csFactory->create((size_t)0, 2));

    ensure(0 != cs.get());

    geos::geom::Coordinate c0(0, 0);
    geos::geom::Coordinate c1(0, 0);

    cs->add(c0);
    cs->add(c1);

    ensure_equals(cs->size(), 2u);

    SegmentStringAutoPtr ss(makeSegmentString(cs.get()));
    ensure(0 != ss.get());

    ensure_equals(ss->size(), 2u);

    ensure_equals(ss->getData(), (void*)0);

    ensure_equals(ss->getCoordinates(), cs.get());

    ensure_equals(ss->getCoordinate(0), c0);

    ensure_equals(ss->getCoordinate(1), c1);

    ensure_equals(ss->isClosed(), true);

    // this would throw an exception
    bool octant_failed=false;
    try {
        ss->getSegmentOctant(0);
    } catch (...) {
        octant_failed=true;
    }
    ensure(octant_failed);

}