From 242fead373cf58ed243460ff30186ade87114f92 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sat, 1 Aug 2020 14:05:46 +0200 Subject: [PATCH] Added test cases for range creation --- ExaArrayTests/ExaArray1DTests.cs | 224 +++++++++++++++++++++++++++++++ 1 file changed, 224 insertions(+) diff --git a/ExaArrayTests/ExaArray1DTests.cs b/ExaArrayTests/ExaArray1DTests.cs index 873aedc..9ebbe6d 100644 --- a/ExaArrayTests/ExaArray1DTests.cs +++ b/ExaArrayTests/ExaArray1DTests.cs @@ -13,6 +13,11 @@ namespace ExaArrayTests [ExcludeFromCodeCoverage] public class InfinityArrayTests { + private class TestClass + { + public int Age { get; set; } + } + [Test] [Category("cover")] [Category("normal")] @@ -301,6 +306,225 @@ namespace ExaArrayTests next = ExaArray1D.CreateFrom(exElem); Assert.That(next.Length, Is.EqualTo(0)); } + + [Test] + [Category("normal")] + [Category("cover")] + public void CreateFrom005Objects() + { + var exPerf = new ExaArray1D(); + exPerf.Extend(3); + exPerf[0] = new TestClass{Age = 5}; + exPerf[1] = new TestClass{Age = 10}; + exPerf[2] = new TestClass{Age = 45}; + + var next = ExaArray1D.CreateFrom(exPerf); + Assert.That(next.Length, Is.EqualTo(3)); + Assert.That(next[1].Age, Is.EqualTo(10)); + + next[1].Age = 50; + Assert.That(next[1].Age, Is.EqualTo(50)); + Assert.That(exPerf[1].Age, Is.EqualTo(50)); + } + + [Test] + [Category("normal")] + [Category("cover")] + public void CreateFromRange001() + { + var exPerf = new ExaArray1D(Strategy.MAX_PERFORMANCE); + exPerf.Extend(3); + exPerf[0] = 0x01; + exPerf[1] = 0x02; + exPerf[2] = 0x03; + + var next = ExaArray1D.CreateFrom(exPerf, 0, 1); + Assert.That(next.Length, Is.EqualTo(2)); + Assert.That(next[0], Is.EqualTo(exPerf[0])); + Assert.That(next[1], Is.EqualTo(exPerf[1])); + Assert.That(next.OptimizationStrategy, Is.EqualTo(exPerf.OptimizationStrategy)); + + exPerf = null; + next = null; + + var exElem = new ExaArray1D(Strategy.MAX_ELEMENTS); + exElem.Extend(3); + exElem[0] = 0x01; + exElem[1] = 0x02; + exElem[2] = 0x03; + + next = ExaArray1D.CreateFrom(exElem, 1, 2); + Assert.That(next.Length, Is.EqualTo(2)); + Assert.That(next[0], Is.EqualTo(exElem[1])); + Assert.That(next[1], Is.EqualTo(exElem[2])); + Assert.That(next.OptimizationStrategy, Is.EqualTo(exElem.OptimizationStrategy)); + } + + [Test] + [Category("normal")] + [Category("cover")] + public void CreateFromRange002() + { + var exPerf = new ExaArray1D(Strategy.MAX_PERFORMANCE); + exPerf.Extend(3); + exPerf[0] = 0x01; + exPerf[1] = 0x02; + exPerf[2] = 0x03; + + Assert.Throws(() => + { + var next = ExaArray1D.CreateFrom(exPerf, 100, 200); + }); + } + + [Test] + [Category("normal")] + [Category("cover")] + public void CreateFromRange003() + { + var exPerf = new ExaArray1D(Strategy.MAX_PERFORMANCE); + exPerf.Extend(3); + exPerf[0] = 0x01; + exPerf[1] = 0x02; + exPerf[2] = 0x03; + + Assert.Throws(() => + { + var next = ExaArray1D.CreateFrom(exPerf, 0, 200); + }); + } + + [Test] + [Category("normal")] + [Category("cover")] + public void CreateFromRange004() + { + var exPerf = new ExaArray1D(Strategy.MAX_PERFORMANCE); + exPerf.Extend(3); + exPerf[0] = 0x01; + exPerf[1] = 0x02; + exPerf[2] = 0x03; + + Assert.Throws(() => + { + var next = ExaArray1D.CreateFrom(exPerf, 200, 100); + }); + } + + [Test] + [Category("normal")] + [Category("cover")] + public void CreateFromRange005() + { + var exPerf = new ExaArray1D(Strategy.MAX_ELEMENTS); + exPerf.Extend(3); + exPerf[0] = 0x01; + exPerf[1] = 0x02; + exPerf[2] = 0x03; + + var next = ExaArray1D.CreateFrom(exPerf, 2, 2); + Assert.That(next.Length, Is.EqualTo(1)); + Assert.That(next.OptimizationStrategy, Is.EqualTo(Strategy.MAX_ELEMENTS)); + Assert.That(next[0], Is.EqualTo(exPerf[2])); + } + + [Test] + [Category("normal")] + [Category("cover")] + public void CreateFromRange006Objects() + { + var exPerf = new ExaArray1D(); + exPerf.Extend(3); + exPerf[0] = new TestClass{Age = 5}; + exPerf[1] = new TestClass{Age = 10}; + exPerf[2] = new TestClass{Age = 45}; + + var next = ExaArray1D.CreateFrom(exPerf, 2, 2); + Assert.That(next.Length, Is.EqualTo(1)); + Assert.That(next[0].Age, Is.EqualTo(45)); + + next[0].Age = 50; + Assert.That(next[0].Age, Is.EqualTo(50)); + Assert.That(exPerf[2].Age, Is.EqualTo(50)); + } + + [Test] + [Category("normal")] + [Category("cover")] + public void CreateFromRange007() + { + const uint MAX = 1_073_741_824; + + var exPerf = new ExaArray1D(Strategy.MAX_PERFORMANCE); + exPerf.Extend(MAX + 3); // more than one chunk + exPerf[MAX - 1 + 2] = 0x01; + exPerf[MAX - 1 + 1] = 0x02; + exPerf[MAX - 1 - 0] = 0x03; + exPerf[MAX - 1 - 1] = 0x04; + exPerf[MAX - 1 - 2] = 0x05; + exPerf[MAX - 1 - 3] = 0x06; + exPerf[MAX - 1 - 4] = 0x07; + + var next = ExaArray1D.CreateFrom(exPerf, MAX - 1 - 2, MAX - 1 + 2); + Assert.That(next.Length, Is.EqualTo(5)); + Assert.That(next[0], Is.EqualTo(exPerf[MAX - 1 - 2])); + Assert.That(next[1], Is.EqualTo(exPerf[MAX - 1 - 1])); + Assert.That(next[2], Is.EqualTo(exPerf[MAX - 1 - 0])); + Assert.That(next[3], Is.EqualTo(exPerf[MAX - 1 + 1])); + Assert.That(next[4], Is.EqualTo(exPerf[MAX - 1 + 2])); + } + + [Test] + [Category("normal")] + [Category("cover")] + public void CreateFromRange008() + { + const uint MAX = 1_073_741_824; + + var exPerf = new ExaArray1D(Strategy.MAX_PERFORMANCE); + exPerf.Extend(3 * MAX + 3); // more than one chunk + exPerf[MAX - 1 + 2] = 0x01; + exPerf[MAX - 1 + 1] = 0x02; + exPerf[MAX - 1 - 0] = 0x03; + exPerf[MAX - 1 - 1] = 0x04; + exPerf[MAX - 1 - 2] = 0x05; + exPerf[MAX - 1 - 3] = 0x06; + exPerf[MAX - 1 - 4] = 0x07; + + var next = ExaArray1D.CreateFrom(exPerf, MAX - 1 - 2, MAX - 1 + 2); + Assert.That(next.Length, Is.EqualTo(5)); + Assert.That(next[0], Is.EqualTo(exPerf[MAX - 1 - 2])); + Assert.That(next[1], Is.EqualTo(exPerf[MAX - 1 - 1])); + Assert.That(next[2], Is.EqualTo(exPerf[MAX - 1 - 0])); + Assert.That(next[3], Is.EqualTo(exPerf[MAX - 1 + 1])); + Assert.That(next[4], Is.EqualTo(exPerf[MAX - 1 + 2])); + } + + [Test] + [Category("normal")] + [Category("cover")] + public void CreateFromRange009() + { + const uint MAX = 1_073_741_824; + + var exPerf = new ExaArray1D(Strategy.MAX_PERFORMANCE); + exPerf.Extend(3 * MAX + 3); // more than one chunk + exPerf[3 * MAX - 1 + 2] = 0x01; + exPerf[3 * MAX - 1 + 1] = 0x02; + exPerf[3 * MAX - 1 - 0] = 0x03; + exPerf[3 * MAX - 1 - 1] = 0x04; + exPerf[3 * MAX - 1 - 2] = 0x05; + exPerf[3 * MAX - 1 - 3] = 0x06; + exPerf[3 * MAX - 1 - 4] = 0x07; + + var next = ExaArray1D.CreateFrom(exPerf, 100_000_000, 3 * MAX - 1 + 2); + Assert.That(next.Length, Is.EqualTo(5)); + Assert.That(next[100_000_000], Is.EqualTo(exPerf[3 * MAX - 1 - 2])); + Assert.That(next[100_000_001], Is.EqualTo(exPerf[3 * MAX - 1 - 1])); + Assert.That(next[100_000_002], Is.EqualTo(exPerf[3 * MAX - 1 - 0])); + Assert.That(next[100_000_003], Is.EqualTo(exPerf[3 * MAX - 1 + 1])); + Assert.That(next[100_000_004], Is.EqualTo(exPerf[3 * MAX - 1 + 2])); + } [Test] [Category("intensive")]