Beispiel #1
0
        public void CreateOnNoArgsReturnsEmptyMap()
        {
            PersistentHashMap m = PersistentHashMap.create();

            Expect(m.count(), EqualTo(0));
            Expect(m.meta(), Null);
        }
Beispiel #2
0
        public void DoBigTest(int numEntries)
        {
            System.Console.WriteLine("Testing {0} items.", numEntries);

            Random rnd = new Random();
            Dictionary <int, int> dict = new Dictionary <int, int>(numEntries);

            for (int i = 0; i < numEntries; i++)
            {
                int r = rnd.Next();
                dict[r] = r;
            }
            PersistentHashMap m = (PersistentHashMap)PersistentHashMap.create(dict);

            Expect(m.count()).To.Equal(dict.Count);

            foreach (int key in dict.Keys)
            {
                Expect(m.containsKey(key));
                Expect(m.valAt(key)).To.Equal(key);
            }

            for (ISeq s = m.seq(); s != null; s = s.next())
            {
                Expect(dict.ContainsKey((int)((IMapEntry)s.first()).key()));
            }
        }
Beispiel #3
0
        public void CreateOnNoArgsReturnsEmptyMap()
        {
            PersistentHashMap m = PersistentHashMap.create();

            Expect(m.count()).To.Equal(0);
            Expect(m.meta()).To.Be.Null();
        }
Beispiel #4
0
        public void CreateOnEmptyDictionaryReturnsEmptyMap()
        {
            Dictionary <int, string> d = new Dictionary <int, string>();
            IPersistentMap           m = PersistentHashMap.create(d);

            Expect(m.count()).To.Equal(0);
        }
Beispiel #5
0
        public void CreateOnEmptyListReturnsEmptyMap()
        {
            ArrayList      a = new ArrayList();
            IPersistentMap m = PersistentHashMap.create1(a);

            Expect(m.count()).To.Equal(0);
        }
Beispiel #6
0
        public void Setup()
        {
            IPersistentMap meta = PersistentHashMap.create("a", 1, "b", 2);

            _s         = StringSeq.create("abcde");
            _sWithMeta = (StringSeq)((IObj)StringSeq.create("abcde")).withMeta(meta);
            _values    = new object[] { 'a', 'b', 'c', 'd', 'e' };
        }
        public void Setup()
        {
            IPersistentMap meta = PersistentHashMap.create("a", 1, "b", 2);

            _r         = new Range(2, 5);
            _rWithMeta = new Range(meta, 2, 5);
            _values    = new object[] { 2, 3, 4 };
        }
Beispiel #8
0
        public void RetriveValueWithUnknownKeyViaValAt()
        {
            IPersistentMap <string, string> target = new PersistentHashMap <string, string>();

            target = target.Assoc("a", "b");

            target.ValAt("x");
        }
Beispiel #9
0
        public void RetriveValueWithUnknownKeyForPrimitiveTypesViaValAt()
        {
            IPersistentMap <int, int> target = new PersistentHashMap <int, int>();

            target = target.Assoc(1, 2);

            target.ValAt(3);
        }
Beispiel #10
0
        public void Setup()
        {
            IPersistentMap meta = PersistentHashMap.create("a", 1, "b", 2);

            _r         = (Range)Range.create(2L, 5L);
            _rWithMeta = (Range)_r.withMeta(meta);
            _values    = new object[] { 2, 3, 4 };
        }
Beispiel #11
0
        void DoEmit(RHC rhc, ObjExpr objx, CljILGen ilg, bool emitUnboxed)
        {
            List <LocalBuilder> locals = new List <LocalBuilder>();

            for (int i = 0; i < _bindingInits.count(); i++)
            {
                BindingInit bi       = (BindingInit)_bindingInits.nth(i);
                Type        primType = Compiler.MaybePrimitiveType(bi.Init);
                if (primType != null)
                {
                    LocalBuilder local = ilg.DeclareLocal(primType);
                    locals.Add(local);
                    GenContext.SetLocalName(local, bi.Binding.Name);
                    bi.Binding.LocalVar = local;

                    ((MaybePrimitiveExpr)bi.Init).EmitUnboxed(RHC.Expression, objx, ilg);
                    ilg.Emit(OpCodes.Stloc, local);
                }
                else
                {
                    LocalBuilder local = ilg.DeclareLocal(typeof(Object));
                    locals.Add(local);
                    GenContext.SetLocalName(local, bi.Binding.Name);
                    bi.Binding.LocalVar = local;

                    bi.Init.Emit(RHC.Expression, objx, ilg);
                    ilg.Emit(OpCodes.Stloc, local);
                }
            }

            Label loopLabel = ilg.DefineLabel();

            ilg.MarkLabel(loopLabel);

            try
            {
                if (_isLoop)
                {
                    Var.pushThreadBindings(PersistentHashMap.create(Compiler.LoopLabelVar, loopLabel));
                }

                if (emitUnboxed)
                {
                    ((MaybePrimitiveExpr)_body).EmitUnboxed(rhc, objx, ilg);
                }
                else
                {
                    _body.Emit(rhc, objx, ilg);
                }
            }
            finally
            {
                if (_isLoop)
                {
                    Var.popThreadBindings();
                }
            }
        }
Beispiel #12
0
        public void CreateOnMetaNoArgsReturnsEmptyMap()
        {
            IPersistentMap meta = new DummyMeta();

            PersistentHashMap m = PersistentHashMap.create(meta);

            Expect(m.count()).To.Equal(0);
            Expect(Object.ReferenceEquals(m.meta(), meta));
        }
Beispiel #13
0
        public void CreateOnMetaNoArgsReturnsEmptyMap()
        {
            IPersistentMap meta = new DummyMeta();

            PersistentHashMap m = PersistentHashMap.create(meta);

            Expect(m.count(), EqualTo(0));
            Expect(m.meta(), SameAs(meta));
        }
Beispiel #14
0
        public void Setup()
        {
            PersistentList p1 = new PersistentList("abc");
            PersistentList p2 = (PersistentList)p1.cons("def");

            _pl         = (PersistentList)p2.cons(7);
            _values     = new object[] { 7, "def", "abc" };
            _plWithMeta = (PersistentList)_pl.withMeta(PersistentHashMap.create("a", 1));
        }
Beispiel #15
0
        public void CreateOnEmptyISeqReturnsEmptyMap()
        {
            object[]       items = new object[] {};
            ArrayList      a     = new ArrayList(items);
            ISeq           s     = PersistentList.create(a).seq();
            IPersistentMap m     = PersistentHashMap.create(s);

            Expect(m.count()).To.Equal(0);
        }
Beispiel #16
0
        private Expression GenCode(RHC rhc, ObjExpr objx, GenContext context, bool genUnboxed)
        {
            LabelTarget loopLabel = Expression.Label();

            List <ParameterExpression> parms = new List <ParameterExpression>();
            List <Expression>          forms = new List <Expression>();

            for (int i = 0; i < _bindingInits.count(); i++)
            {
                BindingInit         bi       = (BindingInit)_bindingInits.nth(i);
                Type                primType = Compiler.MaybePrimitiveType(bi.Init);
                ParameterExpression parmExpr;
                Expression          initExpr;
                if (primType != null)
                {
                    parmExpr = Expression.Parameter(primType, bi.Binding.Name);
                    initExpr = ((MaybePrimitiveExpr)bi.Init).GenCodeUnboxed(RHC.Expression, objx, context);
                }
                else
                {
                    parmExpr = Expression.Parameter(typeof(object), bi.Binding.Name);
                    initExpr = Compiler.MaybeBox(bi.Init.GenCode(RHC.Expression, objx, context));
                }
                bi.Binding.ParamExpression = parmExpr;
                parms.Add(parmExpr);
                forms.Add(Expression.Assign(parmExpr, initExpr));
            }


            forms.Add(Expression.Label(loopLabel));

            try
            {
                if (_isLoop)
                {
                    Var.pushThreadBindings(PersistentHashMap.create(Compiler.LoopLabelVar, loopLabel));
                }

                Expression form = genUnboxed
                    ? ((MaybePrimitiveExpr)_body).GenCodeUnboxed(rhc, objx, context)
                    : _body.GenCode(rhc, objx, context);

                forms.Add(form);
            }
            finally
            {
                if (_isLoop)
                {
                    Var.popThreadBindings();
                }
            }

            Expression block = Expression.Block(parms, forms);

            return(block);
        }
Beispiel #17
0
        public IPersistentMap persistent()
        {
            var hashMap = new Dictionary <object, object>();

            foreach (KeyValuePair <string, object> kvp in this)
            {
                hashMap.Add(Keyword.intern(kvp.Key), kvp.Value);
            }
            return(PersistentHashMap.create(hashMap));
        }
Beispiel #18
0
        public void CreateOnNoArgsReturnsMap()
        {
            PersistentHashMap m = PersistentHashMap.create(1, "a", 2, "b");

            Expect(m.count(), EqualTo(2));
            Expect(m.valAt(1), EqualTo("a"));
            Expect(m.valAt(2), EqualTo("b"));
            Expect(m.containsKey(3), False);
            Expect(m.meta(), Null);
        }
Beispiel #19
0
        public void CreateOnNoArgsReturnsMap()
        {
            PersistentHashMap m = PersistentHashMap.create(1, "a", 2, "b");

            Expect(m.count()).To.Equal(2);
            Expect(m.valAt(1)).To.Equal("a");
            Expect(m.valAt(2)).To.Equal("b");
            Expect(m.containsKey(3)).To.Be.False();
            Expect(m.meta()).To.Be.Null();
        }
Beispiel #20
0
        public void Setup()
        {
            IPersistentMap meta = PersistentHashMap.create("a", 1, "b", 2);

            Cons c1 = new Cons("abc", null);
            Cons c2 = new Cons(meta, "def", c1);

            _obj             = c2;
            _objWithNullMeta = c1;
            _expectedType    = typeof(Cons);
        }
Beispiel #21
0
        public void Setup()
        {
            IPersistentMap meta = new DummyMeta();

            PersistentHashMap m = PersistentHashMap.create(1, "a", 2, "b");

            _testNoChange    = false;
            _objWithNullMeta = (IObj)m;
            _obj             = _objWithNullMeta.withMeta(meta);
            _expectedType    = typeof(PersistentHashMap);
        }
Beispiel #22
0
        // ==================================================================
        // Persistent maps

        public static IPersistentMap Zipmap(object[] ks, object[] vs)
        {
            var len = Mathf.Min(ks.Length, vs.Length) * 2;

            object[] kvs = new object[len];
            for (int i = 0; i < len; i += 2)
            {
                kvs[i]     = ks[i / 2];
                kvs[i + 1] = vs[i / 2];
            }
            return(PersistentHashMap.create(kvs));
        }
Beispiel #23
0
        public void CreatePersistentHashMapFromDictonary()
        {
            var dict = new Dictionary <Int32, Int32>();

            dict[1] = 1;
            dict[3] = 3;

            var target = new PersistentHashMap <Int32, Int32>(dict);

            Assert.AreEqual(1, target.ValAt(1));
            Assert.AreEqual(3, target.ValAt(3));
        }
Beispiel #24
0
        public void CreateOnMetaNoArgsReturnsMap()
        {
            IPersistentMap meta = new DummyMeta();

            PersistentHashMap m = PersistentHashMap.create(meta, 1, "a", 2, "b");

            Expect(m.count(), EqualTo(2));
            Expect(m.valAt(1), EqualTo("a"));
            Expect(m.valAt(2), EqualTo("b"));
            Expect(m.containsKey(3), False);
            Expect(m.meta(), SameAs(meta));
        }
Beispiel #25
0
        public void CreateOnListReturnsMap()
        {
            object[]  items = new object[] { 1, "a", 2, "b" };
            ArrayList a     = new ArrayList(items);

            IPersistentMap m = PersistentHashMap.create1(a);

            Expect(m.count(), EqualTo(2));
            Expect(m.valAt(1), EqualTo("a"));
            Expect(m.valAt(2), EqualTo("b"));
            Expect(m.containsKey(3), False);
        }
Beispiel #26
0
        public void CreateOnISeqReturnsMap()
        {
            object[]       items = new object[] { 1, "a", 2, "b" };
            ArrayList      a     = new ArrayList(items);
            ISeq           s     = PersistentList.create(a).seq();
            IPersistentMap m     = PersistentHashMap.create(s);

            Expect(m.count()).To.Equal(2);
            Expect(m.valAt(1)).To.Equal("a");
            Expect(m.valAt(2)).To.Equal("b");
            Expect(m.containsKey(3)).To.Be.False();
        }
Beispiel #27
0
        public void CreateOnMetaNoArgsReturnsMap()
        {
            IPersistentMap meta = new DummyMeta();

            PersistentHashMap m = PersistentHashMap.create(meta, 1, "a", 2, "b");

            Expect(m.count()).To.Equal(2);
            Expect(m.valAt(1)).To.Equal("a");
            Expect(m.valAt(2)).To.Equal("b");
            Expect(m.containsKey(3)).To.Be.False();
            Expect(Object.ReferenceEquals(m.meta(), meta));
        }
Beispiel #28
0
        [SetUp]
        public void Setup()
        {
            _tw = new StringWriter();
            _obj = _proxyType.GetConstructor(Type.EmptyTypes).Invoke(Array.Empty<object>());

            IProxy ip = _obj as IProxy;
            ip.__initClojureFnMappings(
                PersistentHashMap.create(
                "Flush", new FlushFn(),
                "Close", new CloseFn(),
                "Write", new WriteFn()
                ));
Beispiel #29
0
        public void CreateOnMetaNoArgsReturnsEmptyMap()
        {
            MockRepository mocks = new MockRepository();
            IPersistentMap meta  = mocks.StrictMock <IPersistentMap>();

            mocks.ReplayAll();

            PersistentHashMap m = PersistentHashMap.create(meta);

            Expect(m.count(), EqualTo(0));
            Expect(m.meta(), SameAs(meta));
            mocks.VerifyAll();
        }
Beispiel #30
0
        public clojure.lang.IPersistentMap ToPersistentMap(object mutInst, IFn processElement)
        {
            var len = dict.Count * 2;
            var kvs = new object[len];
            int i   = 0;

            foreach (var kv in dict)
            {
                kvs[i]     = kv.Key;
                kvs[i + 1] = processElement.invoke(mutInst, kv.Key, kv.Value);
                i         += 2;
            }
            return(PersistentHashMap.create(kvs));
        }