virtual public void TestGetArray() { ArrayRandomAccessSource source1 = new ArrayRandomAccessSource(data); // 0 - 99 ArrayRandomAccessSource source2 = new ArrayRandomAccessSource(data); // 100 - 199 ArrayRandomAccessSource source3 = new ArrayRandomAccessSource(data); // 200 - 299 IRandomAccessSource[] inputs = new IRandomAccessSource[] { source1, source2, source3 }; GroupedRandomAccessSource grouped = new GroupedRandomAccessSource(inputs); byte[] output = new byte[500]; Assert.AreEqual(300, grouped.Get(0, output, 0, 300)); AssertArrayEqual(RangeArray(0, 100), 0, output, 0, 100); AssertArrayEqual(RangeArray(0, 100), 0, output, 100, 100); AssertArrayEqual(RangeArray(0, 100), 0, output, 200, 100); Assert.AreEqual(300, grouped.Get(0, output, 0, 301)); AssertArrayEqual(RangeArray(0, 100), 0, output, 0, 100); AssertArrayEqual(RangeArray(0, 100), 0, output, 100, 100); AssertArrayEqual(RangeArray(0, 100), 0, output, 200, 100); Assert.AreEqual(100, grouped.Get(150, output, 0, 100)); AssertArrayEqual(RangeArray(50, 50), 0, output, 0, 50); AssertArrayEqual(RangeArray(0, 50), 0, output, 50, 50); }
virtual public void TestGet() { ArrayRandomAccessSource source1 = new ArrayRandomAccessSource(data); ArrayRandomAccessSource source2 = new ArrayRandomAccessSource(data); ArrayRandomAccessSource source3 = new ArrayRandomAccessSource(data); IRandomAccessSource[] inputs = { source1, source2, source3 }; GroupedRandomAccessSource grouped = new GroupedRandomAccessSource(inputs); Assert.AreEqual(source1.Length + source2.Length + source3.Length, grouped.Length); Assert.AreEqual(source1.Get(99), grouped.Get(99)); Assert.AreEqual(source2.Get(0), grouped.Get(100)); Assert.AreEqual(source2.Get(1), grouped.Get(101)); Assert.AreEqual(source1.Get(99), grouped.Get(99)); Assert.AreEqual(source3.Get(99), grouped.Get(299)); Assert.AreEqual(-1, grouped.Get(300)); }