diff MapTest.m @ 417:effd75b113ba feature/better_map

Add tests and fix a bunch of bugs.
author Jonatan Werpers <jonatan@werpers.com>
date Thu, 02 Feb 2017 20:49:06 +0100
parents
children a6c5e73ff44e
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MapTest.m	Thu Feb 02 20:49:06 2017 +0100
@@ -0,0 +1,97 @@
+function tests = MatTest()
+    tests = functiontests(localfunctions);
+end
+
+function kvp = getKeyValuePairs()
+    kvp = {
+        {1,3},1;
+        struct(), [1; 3; 4];
+        [1,2; 4 3], struct();
+        'Hej', struct('lol', 6);
+        0, 'Nej';
+    };
+end
+
+function testSetAndGet(testCase)
+    keyValuePairs = getKeyValuePairs();
+
+    map = Map();
+
+    % Insert
+    for i = 1:length(keyValuePairs)
+        map(keyValuePairs{i,1}) = keyValuePairs{i,2};
+    end
+
+    % Validate output
+    for i = 1:length(keyValuePairs)
+        v = map(keyValuePairs{i,1});
+        testCase.verifyEqual(v, keyValuePairs{i,2});
+    end
+end
+
+function map = exampleMap()
+    keyValuePairs = getKeyValuePairs();
+
+    map = Map();
+
+    % Insert
+    for i = 1:length(keyValuePairs)
+        map(keyValuePairs{i,1}) = keyValuePairs{i,2};
+    end
+end
+
+function testLength(testCase)
+    map = Map();
+    testCase.verifyEqual(map.length, 0);
+
+    map = exampleMap();
+    testCase.verifyEqual(map.length, 5)
+end
+
+
+function testIsKey(testCase)
+    map = exampleMap();
+
+    keyValuePairs = getKeyValuePairs();
+    keys = keyValuePairs(:,1);
+
+    for i = 1:length(keys)
+        testCase.verifyTrue(map.isKey(keys{i}));
+    end
+
+    notKeys = {
+        'hej',
+        [],
+        1,
+        {2,5},
+    };
+
+    for i = 1:length(notKeys)
+        testCase.verifyFalse(map.isKey(notKeys{i}));
+    end
+end
+
+
+function testRemove(testCase)
+    map = exampleMap();
+
+    remove(map, struct());
+
+    testCase.verifyFalse(map.isKey(struct()));
+end
+
+% function testValues(testCase)
+%     keyValuePairs = getKeyValuePairs();
+
+%     map = exampleMap();
+
+%     testCase.verifyEqual(values(map), keyValuePairs(:,2)');
+% end
+
+% function testKeys(testCase)
+%     keyValuePairs = getKeyValuePairs();
+
+%     map = exampleMap();
+
+%     testCase.verifyEqual(keys(map), keyValuePairs(:,1)');
+% end