コード例 #1
0
        public void ConcatenatedIteratedTest()
        {
            Integer[]            array1 = { MakeIntegerStackItem(1), MakeIntegerStackItem(7), MakeIntegerStackItem(23) };
            Integer[]            array2 = { MakeIntegerStackItem(8), MakeIntegerStackItem(47) };
            ArrayWrapper         it1    = new ArrayWrapper(array1);
            ArrayWrapper         it2    = new ArrayWrapper(array2);
            ConcatenatedIterator uut    = new ConcatenatedIterator(it1, it2);

            AssertionExtensions.Should((bool)uut.Next()).Be(true);
            uut.Key().Should().Be(MakeIntegerStackItem(0));
            uut.Value().Should().Be(array1[0]);

            AssertionExtensions.Should((bool)uut.Next()).Be(true);
            uut.Key().Should().Be(MakeIntegerStackItem(1));
            uut.Value().Should().Be(array1[1]);

            AssertionExtensions.Should((bool)uut.Next()).Be(true);
            uut.Key().Should().Be(MakeIntegerStackItem(2));
            uut.Value().Should().Be(array1[2]);

            AssertionExtensions.Should((bool)uut.Next()).Be(true);
            uut.Key().Should().Be(MakeIntegerStackItem(0));
            uut.Value().Should().Be(array2[0]);

            AssertionExtensions.Should((bool)uut.Next()).Be(true);
            uut.Key().Should().Be(MakeIntegerStackItem(1));
            uut.Value().Should().Be(array2[1]);

            AssertionExtensions.Should((bool)uut.Next()).Be(false);
        }
コード例 #2
0
        public void TestDispose()
        {
            Integer[]            array1 = { MakeIntegerStackItem(1), MakeIntegerStackItem(7), MakeIntegerStackItem(23) };
            Integer[]            array2 = { MakeIntegerStackItem(8), MakeIntegerStackItem(47) };
            ArrayWrapper         it1    = new ArrayWrapper(array1);
            ArrayWrapper         it2    = new ArrayWrapper(array2);
            ConcatenatedIterator uut    = new ConcatenatedIterator(it1, it2);
            Action action = () => uut.Dispose();

            action.Should().NotThrow <Exception>();
        }
コード例 #3
0
        public void ConcatenatedIteratedOverflowTest()
        {
            Integer[]            array1 = { MakeIntegerStackItem(1) };
            ArrayWrapper         it1    = new ArrayWrapper(array1);
            ConcatenatedIterator uut    = new ConcatenatedIterator(it1, it1);

            uut.Next().Should().Be(true);
            uut.Key().Should().Be(MakeIntegerStackItem(0));
            uut.Value().Should().Be(array1[0]);

            uut.Next().Should().Be(true);
            uut.Key().Should().Be(MakeIntegerStackItem(0));
            uut.Value().Should().Be(array1[0]);

            uut.Next().Should().Be(false);
        }
コード例 #4
0
        private static bool Iterator_Concat(ApplicationEngine engine)
        {
            if (!(engine.CurrentContext.EvaluationStack.Pop() is InteropInterface _interface1))
            {
                return(false);
            }
            if (!(engine.CurrentContext.EvaluationStack.Pop() is InteropInterface _interface2))
            {
                return(false);
            }
            IIterator first  = _interface1.GetInterface <IIterator>();
            IIterator second = _interface2.GetInterface <IIterator>();
            IIterator result = new ConcatenatedIterator(first, second);

            engine.CurrentContext.EvaluationStack.Push(StackItem.FromInterface(result));
            return(true);
        }