public UI() { InitializeComponent(); if (!Constant.TESTING) { xb = new Xbee(); xb.open(); xb.enter_api_mode(); } //Initiates C# built-in double buffering this.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer, true); this.Invalidate(); PersistedDataBySignalStrength d = new PersistedDataBySignalStrength(new FileStream("resources/generated_data_by_signal_strength.txt", FileMode.Open, FileAccess.Read)); loc = new ArrayBasedLocations(d.load()); panel1.Visible = false; this.room = new BasicRoom(); this.room.location = new Point(panel1.Location.X, panel1.Location.Y); room.size = new Size(panel1.Size.Width, panel1.Size.Height); // Initialized displayed orientations display_north = true; display_east = true; display_south = true; display_west = true; generate_new_location_list_from_signal_strength(); sld_cluster_radius.set_range(0, 6); sld_cluster_radius.value = 1; this.clusters = Clusterer.cluster(this.locations, (float)sld_cluster_radius.value); sld_num_clusters.set_range(1, clusters.Count); sld_num_clusters.value = sld_num_clusters.Maximum; lbl_cluster_radius.Text = sld_cluster_radius.value.ToString(); lbl_num_clusters.Text = sld_num_clusters.value.ToString(); // Initialize renderer type this.room.set_renderer_type(Constant.HEAT_MAP_RENDERER); }
public void will_test_construtor() { uint primary_key_count = 1; uint node_count = 1; uint orientation_count = 1; uint value_cnt = 6; List<Location>[, ,] locations = new List<Location>[primary_key_count,node_count,orientation_count]; locations[0, 0, 0] = new List<Location>(); for(int i = 0; i < value_cnt; i++) { locations[0, 0, 0].Add(new Location(1, i)); } ILocations loc = new ArrayBasedLocations(locations); for (int i = 0; i < value_cnt; i++) { Specify.That(loc.get_locations(0, 0, 0)[i].Equals(locations[0,0,0][i])).ShouldBeTrue(); } }
static void Main(string[] args) { Boolean display_north = false; Boolean display_east = false; Boolean display_south = false; Boolean display_west = false; PersistedDataBySignalStrength d = new PersistedDataBySignalStrength (new FileStream("resources/generated_data_by_signal_strength.txt", FileMode.Open, FileAccess.Read)); ILocations loc = new ArrayBasedLocations(d.load()); List<Location> locations = new List<Location>(); List<Location> l = new List<Location>(); string orientation = ""; int diameter = -1; if(args.Length == 2) { orientation = args[0]; try { diameter = Convert.ToInt32(args[1]); } catch { Console.WriteLine(program_usage("A valid cluster radius was not entered.")); return; } } else { Console.WriteLine(program_usage("Incorrect number of arguments specified.")); return; } // Determine Orientation if (orientation == "North" || orientation == "north") display_north = true; else if (orientation == "South" || orientation == "south") display_south = true; else if (orientation == "East" || orientation == "east") display_east = true; else if (orientation == "West" || orientation == "west") display_west = true; else if (orientation == "Unknown" || orientation == "unknown") { display_north = true; display_east = true; display_south = true; display_west = true; } else { Console.WriteLine(program_usage("A valid orientation was not entered.")); return; } if (!Constant.TESTING) //Can turn on/off real code and test code { Xbee xb = new Xbee(); xb.open(); xb.enter_api_mode(); SignalStrengthReceiver receiver; if (xb.get_valid_signal_strengths()[Constant.NUM_NODES] > 0) { receiver = new RelaySignalStrengthReceiver(xb); } else { receiver = new DirectSignalStrengthReceiver(xb); } uint[] avg_signals = new uint[8]; avg_signals = receiver.get_avg_signal_strength(2, 200); if (display_north) { for (int i = 0; i < avg_signals.Length; i++) l.AddRange(loc.get_locations(i, Orientation.North, avg_signals[i])); } if (display_south) { for (int i = 0; i < avg_signals.Length; i++) l.AddRange(loc.get_locations(i, Orientation.South, avg_signals[i])); } if (display_east) { for (int i = 0; i < avg_signals.Length; i++) l.AddRange(loc.get_locations(i, Orientation.East, avg_signals[i])); } if (display_west) { for (int i = 0; i < avg_signals.Length; i++) l.AddRange(loc.get_locations(i, Orientation.West, avg_signals[i])); } } else { //Test Code if (display_north) { l.AddRange(loc.get_locations(0, Orientation.North, 55)); l.AddRange(loc.get_locations(1, Orientation.North, 55)); l.AddRange(loc.get_locations(2, Orientation.North, 55)); l.AddRange(loc.get_locations(3, Orientation.North, 55)); } if (display_south) { l.AddRange(loc.get_locations(0, Orientation.South, 60)); l.AddRange(loc.get_locations(1, Orientation.South, 60)); l.AddRange(loc.get_locations(2, Orientation.South, 60)); l.AddRange(loc.get_locations(3, Orientation.South, 60)); } if (display_east) { l.AddRange(loc.get_locations(0, Orientation.East, 71)); l.AddRange(loc.get_locations(1, Orientation.East, 71)); l.AddRange(loc.get_locations(2, Orientation.East, 71)); l.AddRange(loc.get_locations(3, Orientation.East, 71)); } if (display_west) { l.AddRange(loc.get_locations(0, Orientation.West, 59)); l.AddRange(loc.get_locations(1, Orientation.West, 59)); l.AddRange(loc.get_locations(2, Orientation.West, 59)); l.AddRange(loc.get_locations(3, Orientation.West, 59)); } } l.Sort(); locations = l; List<Cluster> clusters = Clusterer.cluster(locations, diameter); List<PositionWithProb> loc_probs = new List<PositionWithProb>(); for (int i = 0; i < clusters.Count; i++) { loc_probs.Add(new PositionWithProb(clusters[i].location, clusters[i].probability)); } PositionWithProbComparer compaerer = new PositionWithProbComparer(); loc_probs.Sort(compaerer); Console.WriteLine(); Console.WriteLine("{0} {1, 16}", "Position", "Probability"); Console.WriteLine("{0} {1, 13}", "-----------", "-----------"); Console.WriteLine("{0, 4} {1, 5}", "X", "Y"); for (int i = 0; i < clusters.Count; i++) { Console.WriteLine("{0, 4:0.00}, {1, 5:0.00}: {2, 9:0.000}%", loc_probs[i].location.x, loc_probs[i].location.y, loc_probs[i].probability * 100); } }
private void run_test_on(uint[] sig_strs, List<Location> expected_clusters, List<Location>[, ,] locations, int dist_from_cent) { ArrayBasedLocations loc = new ArrayBasedLocations(locations); List<Location> pos_locs = new List<Location>(); bool expected_matches_actual = true; for (int i = 0; i < sig_strs.Length; ++i) { pos_locs.AddRange(loc.get_locations(i, Orientation.North, sig_strs[i])); } pos_locs.Sort(); List<Cluster> actual_clusters = Clusterer.cluster(pos_locs, dist_from_cent); int total_locations = 0; for (int i = 0; i < actual_clusters.Count; ++i) { total_locations += actual_clusters[i].locations.Count; } if (expected_clusters.Count != total_locations) { expected_matches_actual = false; } else { int count = 0; //System.Console.WriteLine("\nTest: num_signal_strengths = " + sig_strs.Length + ", dist_from_center = " + dist_from_cent); for (int i = 0; i < actual_clusters.Count; ++i) { //System.Console.WriteLine(""); for (int j = 0; j < actual_clusters[i].locations.Count; ++j) { // Uncomment the 5 commented out lines of code to debug test case. Prints "Actual Value(Expected Value)". //System.Console.Write(actual_clusters[i].locations[j].x + "," + actual_clusters[i].locations[j].y); //System.Console.Write("(" + expected_clusters[count].x + "," + expected_clusters[count].y + ") "); expected_matches_actual &= (actual_clusters[i].locations[j].Equals(expected_clusters[count])); count++; } //System.Console.WriteLine(""); } } Specify.That(expected_matches_actual).ShouldBeTrue(); }