/trunk/Examples/test-suite/csharp/li_std_map_runme.cs
C# | 246 lines | 184 code | 37 blank | 25 comment | 66 complexity | db567de21f74461f67d2c6a378a7ef7c MD5 | raw file
Possible License(s): LGPL-2.1, Cube, GPL-3.0, 0BSD, GPL-2.0
- /* -----------------------------------------------------------------------------
- * li_std_map_runme.cs
- *
- * SWIG C# tester for std_map.i
- * This class tests all the functionality of the std_map.i wrapper.
- * Upon successful testing, the main function doesn't print out anything.
- * If any error is found - it will be printed on the screen.
- * ----------------------------------------------------------------------------- */
-
- using System;
- using System.Collections.Generic;
- using li_std_mapNamespace;
-
- public class li_std_map_runme {
-
- private static readonly int collectionSize = 20;
- private static readonly int midCollection = collectionSize / 2;
-
- public static void Main()
- {
- // Set up an int int map
- StringIntMap simap = new StringIntMap();
- for (int i = 0; i < collectionSize; i++)
- {
- int val = i * 18;
- simap.Add(i.ToString(), val);
- }
-
- // Count property test
- if (simap.Count != collectionSize)
- throw new Exception("Count test failed");
-
- // IsReadOnly property test
- if (simap.IsReadOnly)
- throw new Exception("IsReadOnly test failed");
-
- // Item indexing test
- simap["0"] = 200;
- if (simap["0"] != 200)
- throw new Exception("Item property test failed");
- simap["0"] = 0 * 18;
-
- // ContainsKey() test
- for (int i = 0; i < collectionSize; i++)
- {
- if (!simap.ContainsKey(i.ToString()))
- throw new Exception("ContainsKey test " + i + " failed");
- }
-
- // ContainsKey() test
- for (int i = 0; i < collectionSize; i++)
- {
- if (!simap.Contains(new KeyValuePair<string, int>(i.ToString(), i * 18)))
- throw new Exception("Contains test " + i + " failed");
- }
-
- // TryGetValue() test
- int value;
- bool rc = simap.TryGetValue("3", out value);
- if (rc != true || value != (3 * 18))
- throw new Exception("TryGetValue test 1 failed");
-
- rc = simap.TryGetValue("-1", out value);
- if (rc != false)
- throw new Exception("TryGetValue test 2 failed");
-
- // Keys and Values test
- {
- IList<string> keys = new List<string>(simap.Keys);
- IList<int> values = new List<int>(simap.Values);
- Dictionary<string, int> check = new Dictionary<string, int>();
- if (keys.Count != collectionSize)
- throw new Exception("Keys count test failed");
-
- if (values.Count != collectionSize)
- throw new Exception("Values count test failed");
-
- for (int i = 0; i < keys.Count; i++)
- {
- if (simap[keys[i]] != values[i])
- throw new Exception("Keys and values test failed for index " + i);
- check.Add(keys[i], values[i]);
- }
-
- for (int i = 0; i < collectionSize; i++)
- {
- if (!check.ContainsKey(i.ToString()))
- throw new Exception("Keys and Values ContainsKey test " + i + " failed");
- }
- }
-
- // Add and Remove test
- for (int i = 100; i < 103; i++)
- {
- simap.Add(i.ToString(), i * 18);
- if (!simap.ContainsKey(i.ToString()) || simap[i.ToString()] != (i * 18))
- throw new Exception("Add test failed for index " + i);
-
- simap.Remove(i.ToString());
- if (simap.ContainsKey(i.ToString()))
- throw new Exception("Remove test failed for index " + i);
- }
-
- for (int i = 200; i < 203; i++)
- {
- simap.Add(new KeyValuePair<string, int>(i.ToString(), i * 18));
- if (!simap.ContainsKey(i.ToString()) || simap[i.ToString()] != (i * 18))
- throw new Exception("Add explicit test failed for index " + i);
-
- simap.Remove(new KeyValuePair<string, int>(i.ToString(), i * 18));
- if (simap.ContainsKey(i.ToString()))
- throw new Exception("Remove explicit test failed for index " + i);
- }
-
- // Duplicate key test
- try
- {
- simap.Add("3", 0);
- throw new Exception("Adding duplicate key test failed");
- }
- catch (ArgumentException)
- {
- }
-
- // CopyTo() test
- {
- KeyValuePair<string, int>[] outputarray = new KeyValuePair<string, int>[collectionSize];
- simap.CopyTo(outputarray);
- foreach (KeyValuePair<string, int> val in outputarray)
- {
- if (simap[val.Key] != val.Value)
- throw new Exception("CopyTo (1) test failed, index:" + val.Key);
- }
- }
- {
- KeyValuePair<string, int>[] outputarray = new KeyValuePair<string, int>[midCollection + collectionSize];
- simap.CopyTo(outputarray, midCollection);
- for (int i = midCollection; i < midCollection + collectionSize; i++)
- {
- KeyValuePair<string, int> val = outputarray[i];
- if (simap[val.Key] != val.Value)
- throw new Exception("CopyTo (2) test failed, index:" + val.Key);
- }
- }
- {
- KeyValuePair<string, int>[] outputarray = new KeyValuePair<string, int>[collectionSize - 1];
- try
- {
- simap.CopyTo(outputarray);
- throw new Exception("CopyTo (4) test failed");
- }
- catch (ArgumentException)
- {
- }
- }
-
- // Clear test
- simap.Clear();
- if (simap.Count != 0)
- throw new Exception("Clear test failed");
-
- // Test wrapped methods
- for (int i = 1; i <= 5; i++)
- {
- simap[i.ToString()] = i;
- }
- double avg = li_std_map.valueAverage(simap);
- if (avg != 3.0)
- throw new Exception("Wrapped method valueAverage test failed. Got " + avg);
-
- string keyStringified = li_std_map.stringifyKeys(simap);
- if (keyStringified != " 1 2 3 4 5")
- throw new Exception("Wrapped method stringifyKeys test failed. Got " + keyStringified);
-
- // Test a map with a new complex type (Struct)
- {
- IntStructMap ismap = new IntStructMap();
- for (int i = 0; i < 10; i++)
- {
- ismap.Add(i, new Struct(i * 10.1));
- }
-
- if (ismap.Count != 10)
- throw new Exception("Count test on complex type map failed");
-
- foreach (KeyValuePair<int, Struct> p in ismap)
- {
- if ((p.Key * 10.1) != p.Value.num)
- throw new Exception("Iteration test on complex type map failed for index " + p.Key);
- }
- }
-
- // Test a map of pointers
- {
- IntStructPtrMap ispmap = new IntStructPtrMap();
- for (int i = 0; i < 10; i++)
- {
- ispmap.Add(i, new Struct(i * 10.1));
- }
-
- if (ispmap.Count != 10)
- throw new Exception("Count test on complex type pointer map failed");
-
- foreach (KeyValuePair<int, Struct> p in ispmap)
- {
- if ((p.Key * 10.1) != p.Value.num)
- throw new Exception("Iteration test on complex type pointer map failed for index " + p.Key);
- }
- }
- {
- IntStructConstPtrMap iscpmap = new IntStructConstPtrMap();
- for (int i = 0; i < 10; i++)
- {
- iscpmap.Add(i, new Struct(i * 10.1));
- }
-
- if (iscpmap.Count != 10)
- throw new Exception("Count test on complex type const pointer map failed");
-
- foreach (KeyValuePair<int, Struct> p in iscpmap)
- {
- if ((p.Key * 10.1) != p.Value.num)
- throw new Exception("Iteration test on complex type const pointer map failed for index " + p.Key);
- }
- }
-
- // Test complex type as key (Struct)
- {
- StructIntMap limap = new StructIntMap();
- Struct s7 = new Struct(7);
- Struct s8 = new Struct(8);
- limap[s7] = 8;
- if (limap[s7] != 8)
- throw new Exception("Assignment test on complex key map failed");
-
- if (!limap.ContainsKey(s7))
- throw new Exception("Key test (1) on complex key map failed");
-
- if (limap.ContainsKey(s8))
- throw new Exception("Key test (2) on complex key map failed");
- }
-
- // All done
- }
- }
-