Implements an (immutable) entry in a persistent map.

In built-in BCL collections, this is a struct. We cannot do this here because of all the other baggage this carries (see AMapEntry.

Provides storage for a key and a value. What more can be said?

Inheritance: clojure.lang.AMapEntry
コード例 #1
0
        public void HashCodeFalseOnDifferentValues()
        {
            MapEntry me = new MapEntry(1, "abc");
            PersistentVector v = PersistentVector.create(1, "abcd");

            Expect(me.GetHashCode(), Not.EqualTo(v.GetHashCode()));
        }
コード例 #2
0
        public void EqualsWorksFalseOnDifferentValues()
        {
            MapEntry me = new MapEntry(1, "abc");
            PersistentVector v = PersistentVector.create(1, "abcd");

            Expect(me.Equals(v),False);
        }
コード例 #3
0
        public void CtorCreatesEntryWithProperKeyVal()
        {
            MapEntry me = new MapEntry(1, "abc");

            Expect(me.key(), EqualTo(1));
            Expect(me.val(), EqualTo("abc"));
        }
コード例 #4
0
        public void HashCodeSameAsPersistentVector()
        {
            MapEntry me = new MapEntry(1, "abc");
            PersistentVector v = PersistentVector.create(1, "abc");

            Expect(me.GetHashCode(), EqualTo(v.GetHashCode()));
        }
コード例 #5
0
        public void EqualsWorksOnPersistentVector()
        {
            MapEntry me = new MapEntry(1, "abc");
            PersistentVector v = PersistentVector.create(1, "abc");

            Expect(me.Equals(v));
        }
コード例 #6
0
        public void ConsWorks()
        {
            MapEntry me = new MapEntry(1, "abc");
            IPersistentVector v1 = me.cons(2);

            Expect(me.count(), EqualTo(2));
            Expect(me.key(), EqualTo(1));
            Expect(me.val(), EqualTo("abc"));

            Expect(v1.count(), EqualTo(3));
            Expect(v1.nth(0), EqualTo(1));
            Expect(v1.nth(1), EqualTo("abc"));
            Expect(v1.nth(2), EqualTo(2));
        }
コード例 #7
0
        public void AssocNInRangeModifies()
        {
            MapEntry me = new MapEntry(1, "abc");
            IPersistentVector v1 = me.assocN(0, 2);
            IPersistentVector v2 = me.assocN(1, "def");
            IPersistentVector v3 = me.assocN(2, "ghi");

            Expect(me.count(), EqualTo(2));
            Expect(me.key(), EqualTo(1));
            Expect(me.val(), EqualTo("abc"));

            Expect(v1.count(), EqualTo(2));
            Expect(v1.nth(0), EqualTo(2));
            Expect(v1.nth(1), EqualTo("abc"));

            Expect(v2.count(), EqualTo(2));
            Expect(v2.nth(0), EqualTo(1));
            Expect(v2.nth(1), EqualTo("def"));

            Expect(v3.count(), EqualTo(3));
            Expect(v3.nth(0), EqualTo(1));
            Expect(v3.nth(1), EqualTo("abc"));
            Expect(v3.nth(2), EqualTo("ghi"));
        }
コード例 #8
0
        public void PeekReturnsVal()
        {
            MapEntry me = new MapEntry(1, "abc");

            Expect(me.peek(), EqualTo("abc"));
            Expect(me.count(), EqualTo(2));
            Expect(me.key(), EqualTo(1));
            Expect(me.val(), EqualTo("abc"));
        }
コード例 #9
0
        public void PopLosesTheValue()
        {
            MapEntry me = new MapEntry(1, "abc");
            IPersistentVector v = (IPersistentVector)me.pop();

            Expect(v.length(), EqualTo(1));
            Expect(v.nth(0), EqualTo(1));
        }
コード例 #10
0
 public void NthOutOfRangeLowFails()
 {
     MapEntry me = new MapEntry(1, "abc");
     me.nth(-4);
 }
コード例 #11
0
        public void ExplictIPersistentCollectionConsWorks()
        {
            MapEntry me = new MapEntry(1, "abc");
            IPersistentCollection c = (IPersistentCollection)me;
            ISeq s = c.cons(2).seq();

            Expect(me.count(), EqualTo(2));
            Expect(me.key(), EqualTo(1));
            Expect(me.val(), EqualTo("abc"));

            Expect(s.count(), EqualTo(3));
            Expect(s.first(), EqualTo(1));
            Expect(s.next().first(), EqualTo("abc"));
            Expect(s.next().next().first(), EqualTo(2));
            Expect(s.next().next().next(), Null);
        }
コード例 #12
0
        public void SeqReturnsASeq()
        {
            MapEntry me = new MapEntry(1, "abc");
            ISeq s = me.seq();

            Expect(s.count(), EqualTo(2));
            Expect(s.first(), EqualTo(1));
            Expect(s.next().first(), EqualTo("abc"));
            Expect(s.next().next(), Null);
        }
コード例 #13
0
        public void EmptyReutrnsNull()
        {
            MapEntry me = new MapEntry(1, "abc");

            Expect(me.empty(), Null);
        }
コード例 #14
0
        public void RseqReturnReverseSeq()
        {
            MapEntry me = new MapEntry(1, "abc");

            ISeq s = me.rseq();

            Expect(s.count(), EqualTo(2));
            Expect(s.first(), EqualTo("abc"));
            Expect(s.rest().first(), EqualTo(1));
            Expect(s.rest().rest(), Null);
        }
コード例 #15
0
 public void CountIs2()
 {
     MapEntry me = new MapEntry(1, "abc");
     Expect(me.count(), EqualTo(2));
 }
コード例 #16
0
 public void NthOutOfRangeHighFails()
 {
     MapEntry me = new MapEntry(1, "abc");
     me.nth(4);
 }
コード例 #17
0
 public void AssocNOutOfRangeLowThrows()
 {
     MapEntry me = new MapEntry(1, "abc");
     IPersistentVector v1 = me.assocN(-4, 2);
 }
コード例 #18
0
        public void EntryAtOutOfRangeHighReturnsNull()
        {
            MapEntry me = new MapEntry(1, "abc");
            IMapEntry me1 = me.entryAt(4);

            Expect(me1, Null);
        }
コード例 #19
0
        public void EntryAtOnExistingKeyWorks()
        {
            MapEntry me = new MapEntry(1, "abc");
            IMapEntry me1 = me.entryAt(0);
            IMapEntry me2 = me.entryAt(1);

            Expect(me1.key(), EqualTo(0));
            Expect(me1.val(), EqualTo(1));
            Expect(me2.key(), EqualTo(1));
            Expect(me2.val(), EqualTo("abc"));
        }
コード例 #20
0
        public void ContainsKeyOutOfRangeIsFalse()
        {
            MapEntry me = new MapEntry(1, "abc");

            Expect(me.containsKey(-4),False);
            Expect(me.containsKey(4), False);
        }
コード例 #21
0
        public void ContainsKeyOnExistingKeyWorks()
        {
            MapEntry me = new MapEntry(1, "abc");

            Expect(me.containsKey(0));
            Expect(me.containsKey(1));
        }
コード例 #22
0
 public void AssocNOutOfRangeHighThrows()
 {
     MapEntry me = new MapEntry(1, "abc");
     me.assocN(4, 2);
 }
コード例 #23
0
        public void ValAtOnMissingKeyReturnsNull()
        {
            MapEntry me = new MapEntry(1, "abc");

            Expect(me.valAt(-4), Null);
            Expect(me.valAt(4), Null);
        }
コード例 #24
0
        public void LengthIs2()
        {
            MapEntry me = new MapEntry(1, "abc");

            Expect(me.length(), EqualTo(2));
        }
コード例 #25
0
        public void ValAtWithDefaultOnExistingKeyReturnsValue()
        {
            MapEntry me = new MapEntry(1, "abc");

            Expect(me.valAt(0,7), EqualTo(1));
            Expect(me.valAt(1,7), EqualTo("abc"));
        }
コード例 #26
0
        public void ValAtWithDefaultOnMissingKeyReturnsDefault()
        {
            MapEntry me = new MapEntry(1, "abc");

            Expect(me.valAt(-4,7), EqualTo(7));
            Expect(me.valAt(4, 7), EqualTo(7));
        }
コード例 #27
0
        public void NthInRangeWorks()
        {

            MapEntry me = new MapEntry(1, "abc");

            Expect(me.nth(0), EqualTo(1));
            Expect(me.nth(1), EqualTo("abc"));
        }
コード例 #28
0
 /// <summary>
 /// Gets the first item.
 /// </summary>
 /// <returns>The first item.</returns>
 public override object first()
 {
     return(MapEntry.create(_keys.first(), _vals[_i]));
 }