public void CreateFrom002Objects() { var exPerf = new ExaArray1D <object>(Strategy.MAX_PERFORMANCE); exPerf.Extend(2); exPerf[0] = new object(); exPerf[1] = new object(); var next = ExaArray1D <object> .CreateFrom(exPerf); Assert.That(next.Length, Is.EqualTo(exPerf.Length)); Assert.That(next.OptimizationStrategy, Is.EqualTo(exPerf.OptimizationStrategy)); Assert.That(next[0], Is.SameAs(exPerf[0])); Assert.That(next[1], Is.SameAs(exPerf[1])); Assert.That(next[0], Is.Not.SameAs(next[1])); exPerf = null; next = null; var exElem = new ExaArray1D <object>(Strategy.MAX_ELEMENTS); exElem.Extend(2); exElem[0] = new object(); exElem[1] = new object(); next = ExaArray1D <object> .CreateFrom(exElem); Assert.That(next.Length, Is.EqualTo(exElem.Length)); Assert.That(next.OptimizationStrategy, Is.EqualTo(exElem.OptimizationStrategy)); Assert.That(next[0], Is.SameAs(exElem[0])); Assert.That(next[1], Is.SameAs(exElem[1])); Assert.That(next[0], Is.Not.SameAs(next[1])); }
public void CreateFrom001() { var exPerf = new ExaArray1D <byte>(Strategy.MAX_PERFORMANCE); exPerf.Extend(2); exPerf[0] = 0x01; exPerf[1] = 0x02; var next = ExaArray1D <byte> .CreateFrom(exPerf); Assert.That(next.Length, Is.EqualTo(exPerf.Length)); Assert.That(next.OptimizationStrategy, Is.EqualTo(exPerf.OptimizationStrategy)); Assert.That(next.Items(), Is.EquivalentTo(exPerf.Items())); exPerf = null; next = null; var exElem = new ExaArray1D <byte>(Strategy.MAX_ELEMENTS); exElem.Extend(2); exElem[0] = 0x03; exElem[1] = 0x04; next = ExaArray1D <byte> .CreateFrom(exElem); Assert.That(next.Length, Is.EqualTo(exElem.Length)); Assert.That(next.OptimizationStrategy, Is.EqualTo(exElem.OptimizationStrategy)); Assert.That(next.Items(), Is.EquivalentTo(exElem.Items())); }
public void ExtendingTooFar01() { var exaA = new ExaArray1D <byte>(); Assert.Throws <ArgumentOutOfRangeException>(() => { // Cannot handle more than 1.1 quintillion elements: exaA.Extend(ulong.MaxValue); }); }
public void CreateFrom003() { var exPerf = new ExaArray1D <byte>(Strategy.MAX_PERFORMANCE); exPerf.Extend(5_000_000_000); // more than one chunk var next = ExaArray1D <byte> .CreateFrom(exPerf); Assert.That(next.Length, Is.EqualTo(exPerf.Length)); Assert.DoesNotThrow(() => { next[4_999_999_999] = 0xab; });
public void ExtendingToEndFirstChunk01() { const uint MAX = 1_073_741_824; var exaA = new ExaArray1D <byte>(Strategy.MAX_PERFORMANCE); exaA.Extend(MAX - 2); Assert.That(exaA.Length, Is.EqualTo(MAX - 2)); exaA.Extend(2); Assert.That(exaA.Length, Is.EqualTo(MAX)); }
public void CountingHugeSize01() { var exaA = new ExaArray1D <byte>(); exaA.Extend(5_000_000_000); Assert.That(exaA.Length, Is.EqualTo(5_000_000_000)); Assert.Throws <OverflowException>(() => { // Cannot work because linq uses int: var n = exaA.Items().Count(); }); }
public void CreatingNormalSize02() { var exaA = new ExaArray1D <int>(); exaA.Extend(1_000_000); Assert.That(exaA.Length, Is.EqualTo(1_000_000)); for (ulong n = 0; n < 1_000_000; n++) { exaA[n] = (int)(n * n); } Assert.That(exaA.Items().Count(), Is.EqualTo(1_000_000)); exaA.Extend(); Assert.That(exaA.Length, Is.EqualTo(1_000_001)); }
public void SetInvalidIndex01() { var exaPerf = new ExaArray1D <byte>(Strategy.MAX_PERFORMANCE); exaPerf.Extend(2); Assert.Throws <IndexOutOfRangeException>(() => { exaPerf[ulong.MaxValue] = 0x00; // Because index >= max }); Assert.DoesNotThrow(() => { exaPerf[0] = 0x01; exaPerf[1] = 0x02; }); Assert.Throws <IndexOutOfRangeException>(() => { var t = exaPerf[2] = 0x03; // Because we don't allocate }); exaPerf = null; var exaElem = new ExaArray1D <byte>(Strategy.MAX_ELEMENTS); exaElem.Extend(2); Assert.Throws <IndexOutOfRangeException>(() => { exaElem[ulong.MaxValue] = 0x00; // Because index >= max }); Assert.DoesNotThrow(() => { exaElem[0] = 0x01; exaElem[1] = 0x02; }); Assert.Throws <IndexOutOfRangeException>(() => { exaElem[2] = 0x03; // Because we don't allocate }); }
public void CreatingNormalSize01() { var exaA = new ExaArray1D <byte>(); Assert.That(exaA.Length, Is.EqualTo(0)); Assert.Throws <IndexOutOfRangeException>(() => { var n = exaA[0]; }); Assert.That(exaA.Items(), Is.Empty); exaA.Extend(); Assert.That(exaA.Length, Is.EqualTo(1)); Assert.That(exaA.Items(), Is.EquivalentTo(new[] { 0x00 })); Assert.That(exaA[0], Is.EqualTo(0)); exaA[0] = 0xFF; Assert.That(exaA.Length, Is.EqualTo(1)); Assert.That(exaA.Items(), Is.EquivalentTo(new[] { 0xFF })); Assert.That(exaA[0], Is.EqualTo(0xFF)); }