public static void TestPlaneToJson() { //The one thing we want to check // -a valid plane object converts to a valid JSON object //We could do some tests here as far as malformed/invalid objects, but that ObjectTests should probably be ensuring we are getting a proper object //make some planes Plane plane1 = new Plane("abcd", new PlaneAttributes("abcd", 2, 45, 20, 100, 19000)); //valid plane object Plane plane2 = new Plane("DEF328", new PlaneAttributes("483CBA50", 1, 35, 15, 50, 12000)); //valid plane object //Give them a current position - AddPosition(GPSData data) GPSData gps1 = new GPSData (-90, 90, 20000, 232050); GPSData gps2 = new GPSData (-45, 45, 15000, 190000); plane1.AddPosition(gps1); plane2.AddPosition(gps2); //convert the objects to JSON string jsonPlane1 = plane1.ToJson(); string jsonPlane2 = plane2.ToJson(); JsonObject correctJSONObject1 = (JsonObject)Json.Parse(createCorrectDataSet()); JsonObject correctJSONObject2 = (JsonObject)Json.Parse(createCorrectDataSet2()); //test them jsonPlane1.ShouldBe(correctJSONObject1.PrettyPrint()); jsonPlane2.ShouldBe(correctJSONObject2.PrettyPrint()); }
//Method for Initializing an array of planes for testing public static Plane[][] createTestSet() { //TBD: Add some plane data for 'successful' collisions tests here //The test data needs to be pretty precise (down to the .001 lat/long and a number of entries over a few seconds) PlaneAttributes atts = new PlaneAttributes("default", 1, 150, 150, 150, 3000); long zeroTime = 0x7000000010000000; double denverLat = 39.7392; double denverLong = 104.9903; double sydneyLat = -33.8830555556; double sydneyLong = 151.216666667; double moscowLat = 55.7522222; double moscowLong = 37.6155556; //head on collision Plane a = new Plane("a", atts); Plane aa = new Plane("aa", atts); for (int i = 0; i < 100; i++) { a.AddPosition(new GPSData(denverLat, denverLong + .0223 - i * .0001, 2000, zeroTime + 1000 * i)); aa.AddPosition(new GPSData(denverLat, denverLong - .0223 + i * .0001, 2000, zeroTime + 1000 * i)); } Console.WriteLine(a.GetPosition() + " : " + a.GetVelocity()); Console.WriteLine(aa.GetPosition() + " : " + aa.GetVelocity()); //right angle collision Plane b = new Plane("b", atts); Plane bb = new Plane("bb", atts); for (int i = 0; i < 100; i++) { b.AddPosition(new GPSData(sydneyLat - .0223 + i * .0001, sydneyLong, 2000, zeroTime + 1000 * i)); bb.AddPosition(new GPSData(sydneyLat, sydneyLong - .0223 + i * .0001, 2000, zeroTime + 1000 * i)); } //Collision from behind Plane c = new Plane("c", atts); Plane cc = new Plane("cc", atts); for (int i = 0; i < 100; i++) { c.AddPosition(new GPSData(moscowLat, moscowLong - .0200 + i * .0002, 2000, zeroTime + 1000 * i)); cc.AddPosition(new GPSData(moscowLat, moscowLong - .0400 + i * .00035, 2000, zeroTime + 1000 * i)); } Plane[][] planeArray = new Plane[][] { new Plane[] { a, aa }, new Plane[] { b, bb }, new Plane[] { c, cc } }; return planeArray; }
//Method for initializing an array of planes for fail tests private static Plane[][] createFailTestSet() { //Add some plane data for fail tests here //The test data needs to be pretty precise (down to the .001 lat/long and a number of entries over a few seconds) PlaneAttributes atts = new PlaneAttributes("default", 1, 150, 150, 150, 3000); long zeroTime = 0x7000000010000000; double denverLat = 39.7392; double denverLong = 104.9903; Plane a = new Plane("a", atts); Plane aa = new Plane("aa", atts); Plane b = new Plane("b", atts); Plane bb = new Plane("bb", atts); Plane c = new Plane("c", atts); Plane cc = new Plane("cc", atts); for (int i = 0; i < 100; i++) { //Running somewhat parralel on different latitudes a.AddPosition(new GPSData(denverLat+.0050, denverLong + .0223 + i * .0001, 2000, zeroTime + 1000 * i)); aa.AddPosition(new GPSData(denverLat, denverLong + .0213 + i * .0001, 2000, zeroTime + 1000 * i)); //Running parralel on same latitude and different altitudes b.AddPosition(new GPSData(denverLat, denverLong + .0223 + i * .0001, 2500, zeroTime + 1000 * i)); bb.AddPosition(new GPSData(denverLat, denverLong + .0223 + i * .0001, 2000, zeroTime + 1000 * i)); //cross at different times c.AddPosition(new GPSData(denverLat + i * .0001, denverLong + .0213 + i * .0001, 2500, zeroTime + 1000 * i)); cc.AddPosition(new GPSData(denverLat + i * .0001, denverLong + .0223 - i * .0001, 2000, zeroTime + 1000 * i)); } Plane[][] failPlaneArray = new Plane[][] { new Plane[] { a, aa }, new Plane[] { b, bb }, new Plane[] { c, cc } }; return failPlaneArray; }