package org.openstreetmap.atlas.geography.atlas.change.serializer;

import org.openstreetmap.atlas.geography.atlas.Atlas;
import org.openstreetmap.atlas.utilities.testing.CoreTestRule;
import org.openstreetmap.atlas.utilities.testing.TestAtlas;
import org.openstreetmap.atlas.utilities.testing.TestAtlas.Line;
import org.openstreetmap.atlas.utilities.testing.TestAtlas.Loc;
import org.openstreetmap.atlas.utilities.testing.TestAtlas.Node;

/**
 * Test rule for {@link FeatureChangeGeoJsonSerializerTest}
 *
 * @author Taylor Smock
 */
public class FeatureChangeGeoJsonSerializerTestRule extends CoreTestRule
{

    @TestAtlas(nodes = {
            @Node(id = "3782847618000000", coordinates = @Loc(value = "-38.359739,176.6485281")),
            @Node(id = "3782847620000000", coordinates = @Loc(value = "-38.3597482,176.6482709")),
            @Node(id = "3782847621000000", coordinates = @Loc(value = "-38.3597792,176.6504496")),
            @Node(id = "3782847622000000", coordinates = @Loc(value = "-38.3598164,176.6500507")),
            @Node(id = "3782847623000000", coordinates = @Loc(value = "-38.3598385,176.6506542")),
            @Node(id = "3782847624000000", coordinates = @Loc(value = "-38.3598491,176.6479909")),
            @Node(id = "3782847628000000", coordinates = @Loc(value = "-38.3599877,176.6508922")),
            @Node(id = "3782847630000000", coordinates = @Loc(value = "-38.3600645,176.6571985")),
            @Node(id = "3782847632000000", coordinates = @Loc(value = "-38.3600874,176.651242")),
            @Node(id = "3782847634000000", coordinates = @Loc(value = "-38.3600989,176.6568853")),
            @Node(id = "3782847635000000", coordinates = @Loc(value = "-38.360114,176.6475488")),
            @Node(id = "3782847636000000", coordinates = @Loc(value = "-38.3601217,176.6497252")),
            @Node(id = "3782847637000000", coordinates = @Loc(value = "-38.3601265,176.6573449")),
            @Node(id = "3782847638000000", coordinates = @Loc(value = "-38.3601276,176.6489811")),
            @Node(id = "3782847640000000", coordinates = @Loc(value = "-38.3602169,176.6513931")),
            @Node(id = "3782847641000000", coordinates = @Loc(value = "-38.3602199,176.649531")),
            @Node(id = "3782847642000000", coordinates = @Loc(value = "-38.3602506,176.6493036")),
            @Node(id = "3782847644000000", coordinates = @Loc(value = "-38.3603294,176.6514")),
            @Node(id = "3782847647000000", coordinates = @Loc(value = "-38.3604405,176.6562182")),
            @Node(id = "3782847648000000", coordinates = @Loc(value = "-38.360444,176.6537263")),
            @Node(id = "3782847649000000", coordinates = @Loc(value = "-38.3604541,176.6534691")),
            @Node(id = "3782847650000000", coordinates = @Loc(value = "-38.360461,176.6467102")),
            @Node(id = "3782847651000000", coordinates = @Loc(value = "-38.3604673,176.6578814")),
            @Node(id = "3782847652000000", coordinates = @Loc(value = "-38.360514,176.6512962")),
            @Node(id = "3782847653000000", coordinates = @Loc(value = "-38.3605184,176.6541608")),
            @Node(id = "3782847654000000", coordinates = @Loc(value = "-38.3606028,176.6531058")),
            @Node(id = "3782847655000000", coordinates = @Loc(value = "-38.360605,176.6524474")),
            @Node(id = "3782847656000000", coordinates = @Loc(value = "-38.360621,176.6514461")),
            @Node(id = "3782847657000000", coordinates = @Loc(value = "-38.3606326,176.6582919")),
            @Node(id = "3782847658000000", coordinates = @Loc(value = "-38.3606821,176.6516222")),
            @Node(id = "3782847659000000", coordinates = @Loc(value = "-38.3606835,176.6521662")),
            @Node(id = "3782847660000000", coordinates = @Loc(value = "-38.3606939,176.6554606")),
            @Node(id = "3782847661000000", coordinates = @Loc(value = "-38.3607205,176.6547748")),
            @Node(id = "3782847662000000", coordinates = @Loc(value = "-38.3608421,176.6461893")),
            @Node(id = "3782847663000000", coordinates = @Loc(value = "-38.3608916,176.6585951")),
            @Node(id = "3782847664000000", coordinates = @Loc(value = "-38.3609168,176.6586093")),
            @Node(id = "3782847665000000", coordinates = @Loc(value = "-38.3610628,176.6457163")),
            @Node(id = "3782847667000000", coordinates = @Loc(value = "-38.3611523,176.6451483")),
            @Node(id = "3782847668000000", coordinates = @Loc(value = "-38.3611786,176.6587555")),
            @Node(id = "3782847669000000", coordinates = @Loc(value = "-38.3612855,176.6589053")),
            @Node(id = "3782847670000000", coordinates = @Loc(value = "-38.3613435,176.6609424")),
            @Node(id = "3782847671000000", coordinates = @Loc(value = "-38.3613466,176.6590803")),
            @Node(id = "3782847672000000", coordinates = @Loc(value = "-38.3613471,176.6448127")),
            @Node(id = "3782847673000000", coordinates = @Loc(value = "-38.3613802,176.6611733")),
            @Node(id = "3782847674000000", coordinates = @Loc(value = "-38.3614105,176.6603732")),
            @Node(id = "3782847675000000", coordinates = @Loc(value = "-38.3614201,176.6595148")),
            @Node(id = "3782847677000000", coordinates = @Loc(value = "-38.3614892,176.6445679")),
            @Node(id = "3782847678000000", coordinates = @Loc(value = "-38.361592,176.6442583")),
            @Node(id = "3782847679000000", coordinates = @Loc(value = "-38.3616204,176.6434867")),
            @Node(id = "3782847681000000", coordinates = @Loc(value = "-38.3616489,176.6629946")),
            @Node(id = "3782847684000000", coordinates = @Loc(value = "-38.3616874,176.6631695")),
            @Node(id = "3782847685000000", coordinates = @Loc(value = "-38.3616943,176.6623956")),
            @Node(id = "3782847686000000", coordinates = @Loc(value = "-38.3617311,176.6650042")),
            @Node(id = "3782847687000000", coordinates = @Loc(value = "-38.3617632,176.6641469")),
            @Node(id = "3782847688000000", coordinates = @Loc(value = "-38.3617811,176.6392288")),
            @Node(id = "3782847689000000", coordinates = @Loc(value = "-38.3617894,176.6652375")),
            @Node(id = "3782847690000000", coordinates = @Loc(value = "-38.3617976,176.6388002")),
            @Node(id = "3782847691000000", coordinates = @Loc(value = "-38.3618447,176.639949")),
            @Node(id = "3782847692000000", coordinates = @Loc(value = "-38.3618555,176.6634943")),
            @Node(id = "3782847693000000", coordinates = @Loc(value = "-38.3618633,176.6638956")),
            @Node(id = "3782847694000000", coordinates = @Loc(value = "-38.3618923,176.6637253")),
            @Node(id = "3782847696000000", coordinates = @Loc(value = "-38.3620171,176.6663683")),
            @Node(id = "3782847697000000", coordinates = @Loc(value = "-38.3620421,176.6376985")),
            @Node(id = "3782847698000000", coordinates = @Loc(value = "-38.3620548,176.6665718")),
            @Node(id = "3782847699000000", coordinates = @Loc(value = "-38.3620629,176.6407357")),
            @Node(id = "3782847700000000", coordinates = @Loc(value = "-38.362069,176.6655979")),
            @Node(id = "3782847701000000", coordinates = @Loc(value = "-38.3620721,176.6404785")),
            @Node(id = "3782847702000000", coordinates = @Loc(value = "-38.362074,176.6368411")),
            @Node(id = "3782847703000000", coordinates = @Loc(value = "-38.3621267,176.6426298")),
            @Node(id = "3782847704000000", coordinates = @Loc(value = "-38.3621479,176.6366732")),
            @Node(id = "3782847705000000", coordinates = @Loc(value = "-38.3621652,176.636216")),
            @Node(id = "3782847706000000", coordinates = @Loc(value = "-38.3621668,176.6683826")),
            @Node(id = "3782847707000000", coordinates = @Loc(value = "-38.3621879,176.6690136")),
            @Node(id = "3782847708000000", coordinates = @Loc(value = "-38.3621892,176.6707614")),
            @Node(id = "3782847709000000", coordinates = @Loc(value = "-38.3622005,176.642463")),
            @Node(id = "3782847710000000", coordinates = @Loc(value = "-38.3622158,176.670047")),
            @Node(id = "3782847711000000", coordinates = @Loc(value = "-38.3622256,176.6412033")),
            @Node(id = "3782847712000000", coordinates = @Loc(value = "-38.3622337,176.671365")),
            @Node(id = "3782847713000000", coordinates = @Loc(value = "-38.3622457,176.6710507")),
            @Node(id = "3782847714000000", coordinates = @Loc(value = "-38.3622605,176.641464")),
            @Node(id = "3782847716000000", coordinates = @Loc(value = "-38.3622664,176.66753")),
            @Node(id = "3782847717000000", coordinates = @Loc(value = "-38.3622802,176.6671585")),
            @Node(id = "3782847718000000", coordinates = @Loc(value = "-38.3622832,176.63608")),
            @Node(id = "3782847719000000", coordinates = @Loc(value = "-38.3622962,176.6697076")),
            @Node(id = "3782847720000000", coordinates = @Loc(value = "-38.3623063,176.6694504")),
            @Node(id = "3782847721000000", coordinates = @Loc(value = "-38.3623309,176.6723745")),
            @Node(id = "3782847722000000", coordinates = @Loc(value = "-38.3623558,176.6717172")),
            @Node(id = "3782847723000000", coordinates = @Loc(value = "-38.3623677,176.6725768")),
            @Node(id = "3782847725000000", coordinates = @Loc(value = "-38.3627685,176.673317")),
            @Node(id = "3782847726000000", coordinates = @Loc(value = "-38.3628043,176.6360268")),
            @Node(id = "3782847727000000", coordinates = @Loc(value = "-38.3628906,176.6736681")),
            @Node(id = "3782847728000000", coordinates = @Loc(value = "-38.3629425,176.6740728")),
            @Node(id = "3782847729000000", coordinates = @Loc(value = "-38.3629627,176.674926")),
            @Node(id = "3782847732000000", coordinates = @Loc(value = "-38.3629646,176.6359503")),
            @Node(id = "3782847735000000", coordinates = @Loc(value = "-38.3633276,176.6353128")),
            @Node(id = "3782847737000000", coordinates = @Loc(value = "-38.363705,176.6348776")),
            @Node(id = "3782847740000000", coordinates = @Loc(value = "-38.3641479,176.6344755")),
            @Node(id = "3782847744000000", coordinates = @Loc(value = "-38.3647737,176.6340268")) }, lines = {
                    @Line(id = "374902834000000", coordinates = {
                            @Loc(value = "-38.3629627,176.674926"),
                            @Loc(value = "-38.3629425,176.6740728"),
                            @Loc(value = "-38.3628906,176.6736681"),
                            @Loc(value = "-38.3627685,176.673317"),
                            @Loc(value = "-38.3623677,176.6725768"),
                            @Loc(value = "-38.3623309,176.6723745"),
                            @Loc(value = "-38.3623558,176.6717172"),
                            @Loc(value = "-38.3622337,176.671365"),
                            @Loc(value = "-38.3622457,176.6710507"),
                            @Loc(value = "-38.3621892,176.6707614"),
                            @Loc(value = "-38.3622158,176.670047"),
                            @Loc(value = "-38.3622962,176.6697076"),
                            @Loc(value = "-38.3623063,176.6694504"),
                            @Loc(value = "-38.3621879,176.6690136"),
                            @Loc(value = "-38.3621668,176.6683826"),
                            @Loc(value = "-38.3622664,176.66753"),
                            @Loc(value = "-38.3622802,176.6671585"),
                            @Loc(value = "-38.3620548,176.6665718"),
                            @Loc(value = "-38.3620171,176.6663683"),
                            @Loc(value = "-38.362069,176.6655979"),
                            @Loc(value = "-38.3617894,176.6652375"),
                            @Loc(value = "-38.3617311,176.6650042"),
                            @Loc(value = "-38.3617632,176.6641469"),
                            @Loc(value = "-38.3618633,176.6638956"),
                            @Loc(value = "-38.3618923,176.6637253"),
                            @Loc(value = "-38.3618555,176.6634943"),
                            @Loc(value = "-38.3616874,176.6631695"),
                            @Loc(value = "-38.3616489,176.6629946"),
                            @Loc(value = "-38.3616943,176.6623956"),
                            @Loc(value = "-38.3613802,176.6611733"),
                            @Loc(value = "-38.3613435,176.6609424"),
                            @Loc(value = "-38.3614105,176.6603732"),
                            @Loc(value = "-38.3614201,176.6595148"),
                            @Loc(value = "-38.3613466,176.6590803"),
                            @Loc(value = "-38.3612855,176.6589053"),
                            @Loc(value = "-38.3611786,176.6587555"),
                            @Loc(value = "-38.3609168,176.6586093"),
                            @Loc(value = "-38.3608916,176.6585951"),
                            @Loc(value = "-38.3606326,176.6582919"),
                            @Loc(value = "-38.3604673,176.6578814"),
                            @Loc(value = "-38.3601265,176.6573449"),
                            @Loc(value = "-38.3600645,176.6571985"),
                            @Loc(value = "-38.3600989,176.6568853"),
                            @Loc(value = "-38.3604405,176.6562182"),
                            @Loc(value = "-38.3606939,176.6554606"),
                            @Loc(value = "-38.3607205,176.6547748"),
                            @Loc(value = "-38.3605184,176.6541608"),
                            @Loc(value = "-38.360444,176.6537263"),
                            @Loc(value = "-38.3604541,176.6534691"),
                            @Loc(value = "-38.3606028,176.6531058"),
                            @Loc(value = "-38.360605,176.6524474"),
                            @Loc(value = "-38.3606835,176.6521662"),
                            @Loc(value = "-38.3606821,176.6516222"),
                            @Loc(value = "-38.360621,176.6514461"),
                            @Loc(value = "-38.360514,176.6512962"),
                            @Loc(value = "-38.3603294,176.6514"),
                            @Loc(value = "-38.3602169,176.6513931"),
                            @Loc(value = "-38.3600874,176.651242"),
                            @Loc(value = "-38.3599877,176.6508922"),
                            @Loc(value = "-38.3598385,176.6506542"),
                            @Loc(value = "-38.3597792,176.6504496"),
                            @Loc(value = "-38.3598164,176.6500507"),
                            @Loc(value = "-38.3601217,176.6497252"),
                            @Loc(value = "-38.3602199,176.649531"),
                            @Loc(value = "-38.3602506,176.6493036"),
                            @Loc(value = "-38.3601276,176.6489811"),
                            @Loc(value = "-38.359739,176.6485281"),
                            @Loc(value = "-38.3597482,176.6482709"),
                            @Loc(value = "-38.3598491,176.6479909"),
                            @Loc(value = "-38.360114,176.6475488"),
                            @Loc(value = "-38.360461,176.6467102"),
                            @Loc(value = "-38.3608421,176.6461893"),
                            @Loc(value = "-38.3610628,176.6457163"),
                            @Loc(value = "-38.3611523,176.6451483"),
                            @Loc(value = "-38.3613471,176.6448127"),
                            @Loc(value = "-38.3614892,176.6445679"),
                            @Loc(value = "-38.361592,176.6442583"),
                            @Loc(value = "-38.3616204,176.6434867"),
                            @Loc(value = "-38.3621267,176.6426298"),
                            @Loc(value = "-38.3622005,176.642463"),
                            @Loc(value = "-38.3622605,176.641464"),
                            @Loc(value = "-38.3622256,176.6412033"),
                            @Loc(value = "-38.3620629,176.6407357"),
                            @Loc(value = "-38.3620721,176.6404785"),
                            @Loc(value = "-38.3618447,176.639949"),
                            @Loc(value = "-38.3617811,176.6392288"),
                            @Loc(value = "-38.3617976,176.6388002"),
                            @Loc(value = "-38.3620421,176.6376985"),
                            @Loc(value = "-38.362074,176.6368411"),
                            @Loc(value = "-38.3621479,176.6366732"),
                            @Loc(value = "-38.3621652,176.636216"),
                            @Loc(value = "-38.3622832,176.63608"),
                            @Loc(value = "-38.3628043,176.6360268"),
                            @Loc(value = "-38.3629646,176.6359503"),
                            @Loc(value = "-38.3633276,176.6353128"),
                            @Loc(value = "-38.363705,176.6348776"),
                            @Loc(value = "-38.3641479,176.6344755"),
                            @Loc(value = "-38.3647737,176.6340268") }, tags = {
                                    "waterway=stream" }) })
    private Atlas longWaterWayAtlas;

    /**
     * Get a fairly long waterway to check if reversed geometry is trimmed
     *
     * @return An atlas with only a long waterway
     */
    public Atlas longWaterWayAtlas()
    {
        return this.longWaterWayAtlas;
    }
}
