예제 #1
0
        private static bool runCommand(ref ReferenceSet <Key> set, Key[] domain, Command cmd)
        {
            switch (cmd.type)
            {
            case CmdType.CREATE:
                set = new ReferenceSet <Key>((int)cmd.arg);
                break;

            case CmdType.ADD:
                return(set.add(domain[(int)cmd.arg]));

            case CmdType.DEL:
                return(set.delete(domain[(int)cmd.arg]));

            case CmdType.CLEAR:
                set.clear();
                break;

            case CmdType.UNION:
                set.unionWith(makeSet(domain, (IEnumerable <int>)cmd.arg));
                break;

            case CmdType.INTERSECT:
                set.intersectWith(makeSet(domain, (IEnumerable <int>)cmd.arg));
                break;
            }
            return(true);
        }
예제 #2
0
        public void findAddDeleteAndClearTest_nullKey()
        {
            var set = new ReferenceSet <Key>();

            set.add(new Key());
            set.add(new Key());

            Assert.Throws <ArgumentNullException>(() => set.add(null));
            Assert.Throws <ArgumentNullException>(() => set.find(null));
            Assert.Throws <ArgumentNullException>(() => set.delete(null));
        }
예제 #3
0
        private static void assertSetHasKeys(ReferenceSet <Key> set, Key[] domain, IEnumerable <int> keys)
        {
            int keyCount = (keys == null) ? 0 : keys.Count();

            Assert.Equal(keyCount, set.count);

            bool[] keyMap = makeKeyMap(domain.Length, keys);

            for (int i = 0; i < domain.Length; i++)
            {
                if (keyMap[i])
                {
                    Assert.True(set.find(domain[i]));
                    Assert.False(set.add(domain[i]));
                }
                else
                {
                    Assert.False(set.find(domain[i]));
                    Assert.False(set.delete(domain[i]));
                }
            }

            Assert.Equal(keyCount, set.count);
        }