Ejemplo n.º 1
0
        public void RListTest()
        {
            RList rl = new RList();

            rl.Mode.Should().Be(RMode.List);
            rl.Should().BeEmpty();

            var e = rl.GetEnumerator();

            e.Should().NotBeNull();

            e.MoveNext().Should().BeFalse();

            RObject rv = new RVector <RNumber>(RMode.Numeric, 1);
            var     rs = new RString("abc");

            rl.Add(rs, rv);
            rl.Should().HaveCount(1);

            var e1 = rl.Keys.GetEnumerator();

            e1.MoveNext();
            e1.Current.Should().Be(rs);
            e1.Current.Should().Be(new RString("abc"));

            var e2 = rl.Values.GetEnumerator();

            e2.MoveNext();
            e2.Current.Should().Be(rv);

            rl.ContainsKey(rs).Should().BeTrue();
            rl.ContainsKey(new RString("abc")).Should().BeTrue();

            rl.Contains(new KeyValuePair <RString, RObject>(rs, rv)).Should().BeTrue();

            var arr = new KeyValuePair <RString, RObject> [2];

            rl.CopyTo(arr, 1);

            arr[1].Key.Should().Be(rs);
            arr[1].Value.Should().Be(rv);

            rl[rs].Should().Be(rv);
            rl.IsReadOnly.Should().BeFalse();

            RObject u;

            rl.TryGetValue(rs, out u).Should().BeTrue();

            var en = rl.GetEnumerator();

            en.Should().NotBeNull();
            en.MoveNext().Should().BeTrue();
            en.Current.Key.Should().Be(rs);
            en.Current.Value.Should().Be(rv);
            en.MoveNext().Should().BeFalse();

            IEnumerator <RObject> en1 = ((IEnumerable <RObject>)rl).GetEnumerator();

            en1.Should().NotBeNull();
            en1.MoveNext().Should().BeTrue();
            en1.Current.Should().Be(rv);
            en1.MoveNext().Should().BeFalse();

            IEnumerator <KeyValuePair <RString, RObject> > en2 = ((IEnumerable <KeyValuePair <RString, RObject> >)rl).GetEnumerator();

            en2.Should().NotBeNull();
            en2.MoveNext().Should().BeTrue();
            en2.Current.Key.Should().Be(rs);
            en2.Current.Value.Should().Be(rv);
            en2.MoveNext().Should().BeFalse();

            IEnumerator en3 = ((IEnumerable)rl).GetEnumerator();

            en3.Should().NotBeNull();
            en3.MoveNext().Should().BeTrue();
            en3.MoveNext().Should().BeFalse();

            rl.Remove(rs).Should().BeTrue();
            rl.Should().BeEmpty();
            rl.ContainsKey(rs).Should().BeFalse();

            rl.Add(new KeyValuePair <RString, RObject>(new RString("x"), new RLogical(true)));
            rl.Length.Should().Be(1);
            rl.Count.Should().Be(1);
            rl.Clear();
            rl.Length.Should().Be(0);
            rl.Count.Should().Be(0);

            rl.TryGetValue(rs, out u).Should().BeFalse();
            u.Should().BeNull();
        }