public Boolean split_test(String name, int index) { //create a kml folder by tripname IKmlFolder temp = t_pool.getByName(name); // get the current placemark and the pre placemark at a given index IKmlPlacemark sst = (IKmlPlacemark)temp.getFeatures().getChildNodes().item(index - 1); IKmlPlacemark st = (IKmlPlacemark)temp.getFeatures().getChildNodes().item(index); // get trip size, number of trips and number of columns(lat,long ,elapse time etc) int pt_size = temp.getFeatures().getChildNodes().getLength(); int init_size_t = t_pool.getSize(); core.split(st); //get index + 1 of the current trip String _name = "Trip_" + (Module.getIndex(name) + 1); Boolean gflag = true; Boolean fflag = true; try { int final_size_t = t_pool.getSize(); //compare the initial size of the t pool against the final t pool. Assert.AreEqual(init_size_t, final_size_t - 1); //compare the split index with the size of the first half of the splitted trip Assert.AreEqual(index, t_pool.getByName(name).getFeatures().getChildNodes().getLength()); // compare the split index with the size of the second half of the splitted trip Assert.AreEqual(pt_size - index, t_pool.getByName(_name).getFeatures().getChildNodes().getLength()); Console.WriteLine(" >>>>>>>>>>>> Passed the test for split the trip on GUI level <<<<<<<<<<<<"); } catch { Console.WriteLine(" -----------> Failed the test for split the trip on GUI level <-----------"); gflag = false; } try { IKmlObjectList days = ge.getFeatures().getChildNodes(); IKmlDocument day = (IKmlDocument)days.item(0); String r_start = txtedit.getViewer().Rows[0]["Start"].ToString(); String r_finsih = txtedit.getViewer().Rows[0]["Finish"].ToString(); String r_duration = txtedit.getViewer().Rows[0]["Time"].ToString(); String r_slon = txtedit.getViewer().Rows[0]["sLongitude"].ToString(); String r_flon = txtedit.getViewer().Rows[0]["fLongitude"].ToString(); String r_slat = txtedit.getViewer().Rows[0]["sLatitude"].ToString(); String r_flat = txtedit.getViewer().Rows[0]["fLatitude"].ToString(); txtedit.splitTrip(day.getName(), Module.getIndex(name).ToString(), t_pool.getStart(t_pool.getByName("Trip_" + (Module.getIndex(name) + 1))), t_pool.getFinish(t_pool.getByName(name)), t_pool); try { Assert.AreEqual(txtedit.getViewer().Rows[0]["Finish"].ToString(), t_pool.getFinish(t_pool.getByName(name)).getName().ToString()); Assert.AreEqual(txtedit.getViewer().Rows[1]["Start"].ToString(), t_pool.getStart(t_pool.getByName("Trip_" + (Module.getIndex(name) + 1))).getName().ToString()); Console.WriteLine(" >>>>>>>>>>>> Succeed to compute the correct start and finish time <<<<<<<<<<<<"); } catch { Console.WriteLine(" -----------> Failed to compute the correct start and finish time <-----------"); fflag = false; } try { double tp1 = Module.durationConverter(txtedit.getViewer().Rows[0]["Time"].ToString()); double gap = ((Convert.ToDateTime(txtedit.getViewer().Rows[1]["Start"].ToString()) - Convert.ToDateTime(txtedit.getViewer().Rows[0]["Finish"].ToString()))).TotalSeconds; double tp2 = Module.durationConverter(txtedit.getViewer().Rows[1]["Time"].ToString()); // MessageBox.Show(Module.durationConverter(txtedit.getViewer().Rows[0]["Time"].ToString()) + " " + t.ToString() + " " + Module.durationConverter(txtedit.getViewer().Rows[1]["Time"].ToString()) + " " + Module.durationConverter(r_duration)); Assert.AreEqual(Module.durationConverter(r_duration), tp1 + gap + tp2); Console.WriteLine(" >>>>>>>>>>>> Succeed to compute the correct trip duration <<<<<<<<<<<<"); } catch { Console.WriteLine(" -----------> Failed to compute the correct the trip duration <-----------"); fflag = false; } try { String n_slon = txtedit.getViewer().Rows[1]["sLongitude"].ToString(); String n_slat = txtedit.getViewer().Rows[1]["sLatitude"].ToString(); String n_flon = txtedit.getViewer().Rows[0]["sLongitude"].ToString(); String n_flat = txtedit.getViewer().Rows[0]["sLatitude"].ToString(); String a_slon = Module.getCoordinates(t_pool.getStart(t_pool.getByName("Trip_" + (Module.getIndex(name) + 1))))["lon"].ToString(); String a_slat = Module.getCoordinates(t_pool.getStart(t_pool.getByName("Trip_" + (Module.getIndex(name) + 1))))["lat"].ToString(); String a_flon = Module.getCoordinates(t_pool.getStart(t_pool.getByName(name)))["lon"].ToString(); String a_flat = Module.getCoordinates(t_pool.getStart(t_pool.getByName(name)))["lat"].ToString(); /* * MessageBox.Show(n_slon+" "+a_slon); * MessageBox.Show(n_slat + " " + a_slat); * * MessageBox.Show(n_flon + " " + a_flon); * MessageBox.Show(n_flat + " " + a_flat); * * Assert.AreEqual(n_slat.Trim(), a_slat.Trim()); * Assert.AreEqual(n_slon.Trim(), a_slon.Trim()); * * Assert.AreEqual(n_flat.Trim(), a_flat.Trim()); * Assert.AreEqual(n_flon.Trim(), a_flon.Trim()); */ Console.WriteLine(" >>>>>>>>>>>> Succeed to compute the correct start and finish coordinates <<<<<<<<<<<<<"); } catch { Console.WriteLine(" -----------> Failed to compute the correct start and finish coordinates <----------"); fflag = false; } Assert.AreEqual(true, fflag); Console.WriteLine(" >>>>>>>>>>>> Passed the test for split the trip on file level <<<<<<<<<<<<<"); } catch { Console.WriteLine(" -----------> Failed the test for split the trip on file level <----------"); } return(gflag && fflag); }
public Boolean split(IKmlPlacemark sp_point) { try { Hashtable cords = Module.getCoordinates(sp_point); IKmlFolder _trip = (IKmlFolder)sp_point.getParentNode(); _trip.setVisibility(0); String t_name = t_pool.getParent(sp_point.getName()); String[] t_att = t_pool.getTripDetailsForTrip(Module.getIndex(t_name).ToString()); ArrayList trip = new ArrayList(); trip.Add(t_name); trip.Add(_trip); trip.Add(t_att); record.spl_trip(trip); int index = int.Parse((t_name.Split('_')[1])); IKmlFolder[] sub = split(index, _trip, sp_point, null); IKmlPlacemark fn = t_pool.getFinish(sub[0]); Hashtable _cords = Module.getCoordinates(fn); String[] att_temp1 = (String[])t_att.Clone(); String[] att_temp2 = (String[])t_att.Clone(); /* * att_temp1[5] = fn.getName(); * att_temp2[4] = sp_point.getName(); * * att_temp1[6] = Module.duration(att_temp1[4], att_temp1[5]); * att_temp2[6] = Module.duration(att_temp2[4], att_temp2[5]); * * att_temp1[11] = _cords["lon"].ToString(); * att_temp1[12] = _cords["lat"].ToString(); * * att_temp2[9] = cords["lon"].ToString(); * att_temp2[10] = cords["lat"].ToString(); */ IKmlObjectList days = ge.getFeatures().getChildNodes(); IKmlDocument day = (IKmlDocument)days.item(0); day.getFeatures().appendChild(sub[0]); day.getFeatures().appendChild(sub[1]); /* * if (sub[0].getFeatures().getChildNodes().getLength() <= sub[1].getFeatures().getChildNodes().getLength()) * { * double distance = Module.calDistance(sub[0]); * att_temp1[7] = distance.ToString(); * att_temp2[7] = (double.Parse(t_att[7]) - distance).ToString(); * } * else * { * double distance = Module.calDistance(sub[1]); * att_temp2[7] = distance.ToString(); * att_temp1[7] = (double.Parse(t_att[7]) - distance).ToString(); * } */ /* * The duration of a trip from might be less than 0 when the program interpreter inconsistent kml and txt file * * chen */ /* try * { * att_temp1[8] = Math.Round((double.Parse(att_temp1[7]) / Module.durationConverter(att_temp1[6])), 3).ToString(); * att_temp2[8] = Math.Round((double.Parse(att_temp2[7]) / Module.durationConverter(att_temp2[6])), 3).ToString(); * } * catch * { * MessageBox.Show("kml and txt file doesn't match"); * att_temp2[8] = "-0"; * att_temp1[8] = "-0"; * } */ t_pool.insert(index, sub[0], att_temp1, sub[1], att_temp2); return(true); } catch { return(false); } }