|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081 |
- using FluentAssertions;
- using FluentAssertions.Execution;
- using FluentAssertions.Primitives;
- using Tensorflow.NumPy;
- using System;
- using System.Diagnostics;
- using System.Linq;
- using System.Runtime.CompilerServices;
- using Tensorflow;
-
- namespace TensorFlowNET.UnitTest
- {
- [DebuggerStepThrough]
- public static class FluentExtension
- {
- public static ShapeAssertions Should(this Shape shape)
- {
- return new ShapeAssertions(shape);
- }
-
- public static NDArrayAssertions Should(this NDArray arr)
- {
- return new NDArrayAssertions(arr);
- }
-
- public static string ToString(this Array arr, bool flat)
- {
- // return new NDArray(arr).ToString(flat);
- throw new NotImplementedException("");
- }
- }
-
- [DebuggerStepThrough]
- public class ShapeAssertions : ReferenceTypeAssertions<Shape, ShapeAssertions>
- {
- public ShapeAssertions(Shape instance)
- {
- Subject = instance;
- }
-
- protected override string Identifier => "shape";
-
- public AndConstraint<ShapeAssertions> BeOfSize(int size, string because = null, params object[] becauseArgs)
- {
- Subject.size.Should().Be((ulong)size, because, becauseArgs);
- return new AndConstraint<ShapeAssertions>(this);
- }
-
- public AndConstraint<ShapeAssertions> NotBeOfSize(int size, string because = null, params object[] becauseArgs)
- {
- Subject.size.Should().NotBe((ulong)size, because, becauseArgs);
- return new AndConstraint<ShapeAssertions>(this);
- }
-
- public AndConstraint<ShapeAssertions> BeShaped(params int[] dimensions)
- {
- if (dimensions == null)
- throw new ArgumentNullException(nameof(dimensions));
-
- if (dimensions.Length == 0)
- throw new ArgumentException("Value cannot be an empty collection.", nameof(dimensions));
-
- Subject.dims.Should().BeEquivalentTo(dimensions);
- return new AndConstraint<ShapeAssertions>(this);
- }
-
- public AndConstraint<ShapeAssertions> Be(Shape shape, string because = null, params object[] becauseArgs)
- {
- Execute.Assertion
- .BecauseOf(because, becauseArgs)
- .ForCondition(Subject.Equals(shape))
- .FailWith($"Expected shape to be {shape.ToString()} but got {Subject.ToString()}");
-
- return new AndConstraint<ShapeAssertions>(this);
- }
-
- public AndConstraint<ShapeAssertions> BeEquivalentTo(int? size = null, int? ndim = null, ITuple shape = null)
- {
- if (size.HasValue)
- {
- BeOfSize(size.Value, null);
- }
-
- if (ndim.HasValue)
- HaveNDim(ndim.Value);
-
- if (shape != null)
- for (int i = 0; i < shape.Length; i++)
- {
- Subject.dims[i].Should().Be((int)shape[i]);
- }
-
- return new AndConstraint<ShapeAssertions>(this);
- }
-
- public AndConstraint<ShapeAssertions> NotBe(Shape shape, string because = null, params object[] becauseArgs)
- {
- Execute.Assertion
- .BecauseOf(because, becauseArgs)
- .ForCondition(!Subject.Equals(shape))
- .FailWith($"Expected shape to be {shape.ToString()} but got {Subject.ToString()}");
-
- return new AndConstraint<ShapeAssertions>(this);
- }
-
- public AndConstraint<ShapeAssertions> HaveNDim(int ndim)
- {
- Subject.dims.Length.Should().Be(ndim);
- return new AndConstraint<ShapeAssertions>(this);
- }
-
- public AndConstraint<ShapeAssertions> BeScalar()
- {
- Subject.IsScalar.Should().BeTrue();
- return new AndConstraint<ShapeAssertions>(this);
- }
-
- public AndConstraint<ShapeAssertions> NotBeScalar()
- {
- Subject.IsScalar.Should().BeFalse();
- return new AndConstraint<ShapeAssertions>(this);
- }
-
- public AndConstraint<ShapeAssertions> BeNDim(int ndim)
- {
- Subject.dims.Length.Should().Be(ndim);
- return new AndConstraint<ShapeAssertions>(this);
- }
- }
-
- //[DebuggerStepThrough]
- public class NDArrayAssertions : ReferenceTypeAssertions<NDArray, NDArrayAssertions>
- {
- public NDArrayAssertions(NDArray instance)
- {
- Subject = instance;
- }
-
- protected override string Identifier => "shape";
-
- public AndConstraint<NDArrayAssertions> BeOfSize(int size, string because = null, params object[] becauseArgs)
- {
- Subject.size.Should().Be((ulong)size, because, becauseArgs);
- return new AndConstraint<NDArrayAssertions>(this);
- }
-
- public AndConstraint<NDArrayAssertions> BeShaped(params int[] dimensions)
- {
- if (dimensions == null)
- throw new ArgumentNullException(nameof(dimensions));
-
- if (dimensions.Length == 0)
- throw new ArgumentException("Value cannot be an empty collection.", nameof(dimensions));
-
- Subject.dims.Should().BeEquivalentTo(dimensions);
- return new AndConstraint<NDArrayAssertions>(this);
- }
-
- public AndConstraint<NDArrayAssertions> BeShaped(int? size = null, int? ndim = null, ITuple shape = null)
- {
- if (size.HasValue)
- {
- BeOfSize(size.Value, null);
- }
-
- if (ndim.HasValue)
- HaveNDim(ndim.Value);
-
- if (shape != null)
- for (int i = 0; i < shape.Length; i++)
- {
- Subject.dims[i].Should().Be((int)shape[i]);
- }
-
- return new AndConstraint<NDArrayAssertions>(this);
- }
-
- public AndConstraint<NDArrayAssertions> NotBeShaped(Shape shape, string because = null, params object[] becauseArgs)
- {
- Execute.Assertion
- .BecauseOf(because, becauseArgs)
- .ForCondition(!Subject.dims.Equals(shape.dims))
- .FailWith($"Expected shape to be {shape} but got {Subject}");
-
- return new AndConstraint<NDArrayAssertions>(this);
- }
-
- public AndConstraint<NDArrayAssertions> HaveNDim(int ndim)
- {
- Subject.ndim.Should().Be(ndim);
- return new AndConstraint<NDArrayAssertions>(this);
- }
-
- public AndConstraint<NDArrayAssertions> BeScalar()
- {
- Subject.shape.IsScalar.Should().BeTrue();
- return new AndConstraint<NDArrayAssertions>(this);
- }
-
- public AndConstraint<NDArrayAssertions> BeScalar(object value)
- {
- Subject.shape.IsScalar.Should().BeTrue();
- Subject.GetValue().Should().Be(value);
- return new AndConstraint<NDArrayAssertions>(this);
- }
-
- public AndConstraint<NDArrayAssertions> BeOfType(NumpyDType typeCode)
- {
- Subject.dtype.Should().Be(typeCode);
- return new AndConstraint<NDArrayAssertions>(this);
- }
-
- public AndConstraint<NDArrayAssertions> BeOfType(Type typeCode)
- {
- Subject.dtype.Should().Be(typeCode);
- return new AndConstraint<NDArrayAssertions>(this);
- }
-
- public AndConstraint<NDArrayAssertions> BeOfType<T>()
- {
- Subject.dtype.Should().Be(InfoOf<T>.NPTypeCode);
- return new AndConstraint<NDArrayAssertions>(this);
- }
-
- public AndConstraint<NDArrayAssertions> NotBeScalar()
- {
- Subject.shape.IsScalar.Should().BeFalse();
- return new AndConstraint<NDArrayAssertions>(this);
- }
-
-
- public AndConstraint<NDArrayAssertions> BeNDim(int ndim)
- {
- Subject.ndim.Should().Be(ndim);
- return new AndConstraint<NDArrayAssertions>(this);
- }
-
- public AndConstraint<NDArrayAssertions> Be(NDArray expected)
- {
- Execute.Assertion
- .ForCondition(np.array_equal(Subject, expected))
- .FailWith($"Expected the subject and other ndarray to be equals.\n------- Subject -------\n{Subject}\n------- Expected -------\n{expected}");
-
- return new AndConstraint<NDArrayAssertions>(this);
- }
-
- public AndConstraint<NDArrayAssertions> BeOfValues(params object[] values)
- {
- if (values == null)
- throw new ArgumentNullException(nameof(values));
-
- Subject.size.Should().Be((ulong)values.Length, "the method BeOfValues also confirms the sizes are matching with given values.");
-
- #if _REGEN
- #region Compute
- switch (Subject.typecode)
- {
- %foreach supported_dtypes,supported_dtypes_lowercase%
- case NPTypeCode.#1:
- {
- var iter = Subject.AsIterator<#2>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.To#1(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: #1).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }
- break;
- }
- %
- default:
- throw new NotSupportedException();
- }
- #endregion
- #else
-
- #region Compute
-
- switch (Subject.dtype)
- {
- case NumpyDType.Boolean:
- {
- var iter = Subject.AsIterator<bool>();
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToBoolean(values[i]);
- /*var nextval = iter.MoveNext();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: Boolean).\n------- Subject -------\n{Subject}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);*/
- }
-
- break;
- }
-
- case NumpyDType.Byte:
- {
- var iter = Subject.AsIterator<byte>();
- /*var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToByte(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: Byte).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }*/
-
- break;
- }
-
- case NumpyDType.Int16:
- {
- var iter = Subject.AsIterator<short>();
- /*var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToInt16(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: Int16).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }*/
-
- break;
- }
-
- case NumpyDType.UInt16:
- {
- var iter = Subject.AsIterator<ushort>();
- /*var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToUInt16(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: UInt16).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }*/
-
- break;
- }
-
- case NumpyDType.Int32:
- {
- var iter = Subject.AsIterator<int>();
- /*var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToInt32(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: Int32).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }*/
-
- break;
- }
-
- case NumpyDType.UInt32:
- {
- var iter = Subject.AsIterator<uint>();
- /*var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToUInt32(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: UInt32).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }*/
-
- break;
- }
-
- case NumpyDType.Int64:
- {
- var iter = Subject.AsIterator<long>();
- /*var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToInt64(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: Int64).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }*/
-
- break;
- }
-
- case NumpyDType.UInt64:
- {
- var iter = Subject.AsIterator<ulong>();
- /*var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToUInt64(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: UInt64).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }*/
-
- break;
- }
-
- case NumpyDType.Char:
- {
- var iter = Subject.AsIterator<char>();
- /*var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToChar(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: Char).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }*/
-
- break;
- }
-
- case NumpyDType.Double:
- {
- var iter = Subject.AsIterator<double>();
- /*var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToDouble(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: Double).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }*/
-
- break;
- }
-
- case NumpyDType.Single:
- {
- var iter = Subject.AsIterator<float>();
- /*var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToSingle(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: Single).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }*/
-
- break;
- }
-
- case NumpyDType.Decimal:
- {
- var iter = Subject.AsIterator<decimal>();
- /*var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToDecimal(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: Decimal).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }*/
-
- break;
- }
-
- default:
- throw new NotSupportedException();
- }
-
- #endregion
-
- #endif
-
-
- return new AndConstraint<NDArrayAssertions>(this);
- }
-
- public AndConstraint<NDArrayAssertions> AllValuesBe(object val)
- {
-
- #region Compute
-
- /*switch (Subject.typecode)
- {
- case NPTypeCode.Boolean:
- {
- var iter = Subject.AsIterator<bool>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- var expected = Convert.ToBoolean(val);
- for (int i = 0; hasnext(); i++)
- {
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {2}th value to be {0}, but found {1} (dtype: Boolean).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n{val}", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.Byte:
- {
- var iter = Subject.AsIterator<byte>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- var expected = Convert.ToByte(val);
- for (int i = 0; hasnext(); i++)
- {
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {2}th value to be {0}, but found {1} (dtype: Byte).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n{val}", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.Int16:
- {
- var iter = Subject.AsIterator<short>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- var expected = Convert.ToInt16(val);
- for (int i = 0; hasnext(); i++)
- {
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {2}th value to be {0}, but found {1} (dtype: Int16).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n{val}", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.UInt16:
- {
- var iter = Subject.AsIterator<ushort>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- var expected = Convert.ToUInt16(val);
- for (int i = 0; hasnext(); i++)
- {
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {2}th value to be {0}, but found {1} (dtype: UInt16).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n{val}", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.Int32:
- {
- var iter = Subject.AsIterator<int>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- var expected = Convert.ToInt32(val);
- for (int i = 0; hasnext(); i++)
- {
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {2}th value to be {0}, but found {1} (dtype: Int32).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n{val}", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.UInt32:
- {
- var iter = Subject.AsIterator<uint>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- var expected = Convert.ToUInt32(val);
- for (int i = 0; hasnext(); i++)
- {
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {2}th value to be {0}, but found {1} (dtype: UInt32).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n{val}", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.Int64:
- {
- var iter = Subject.AsIterator<long>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- var expected = Convert.ToInt64(val);
- for (int i = 0; hasnext(); i++)
- {
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {2}th value to be {0}, but found {1} (dtype: Int64).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n{val}", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.UInt64:
- {
- var iter = Subject.AsIterator<ulong>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- var expected = Convert.ToUInt64(val);
- for (int i = 0; hasnext(); i++)
- {
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {2}th value to be {0}, but found {1} (dtype: UInt64).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n{val}", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.Char:
- {
- var iter = Subject.AsIterator<char>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- var expected = Convert.ToChar(val);
- for (int i = 0; hasnext(); i++)
- {
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {2}th value to be {0}, but found {1} (dtype: Char).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n{val}", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.Double:
- {
- var iter = Subject.AsIterator<double>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- var expected = Convert.ToDouble(val);
- for (int i = 0; hasnext(); i++)
- {
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {2}th value to be {0}, but found {1} (dtype: Double).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n{val}", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.Single:
- {
- var iter = Subject.AsIterator<float>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- var expected = Convert.ToSingle(val);
- for (int i = 0; hasnext(); i++)
- {
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {2}th value to be {0}, but found {1} (dtype: Single).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n{val}", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.Decimal:
- {
- var iter = Subject.AsIterator<decimal>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- var expected = Convert.ToDecimal(val);
- for (int i = 0; hasnext(); i++)
- {
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {2}th value to be {0}, but found {1} (dtype: Decimal).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n{val}", expected, nextval, i);
- }
-
- break;
- }
-
- default:
- throw new NotSupportedException();
- }*/
-
- #endregion
-
- return new AndConstraint<NDArrayAssertions>(this);
- }
-
- public AndConstraint<NDArrayAssertions> BeOfValuesApproximately(double sensitivity, params object[] values)
- {
- if (values == null)
- throw new ArgumentNullException(nameof(values));
-
- Subject.size.Should().Be((ulong)values.Length, "the method BeOfValuesApproximately also confirms the sizes are matching with given values.");
-
- #region Compute
-
- /*switch (Subject.typecode)
- {
- case NPTypeCode.Boolean:
- {
- var iter = Subject.AsIterator<bool>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToBoolean(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(expected == nextval)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: Boolean).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.Byte:
- {
- var iter = Subject.AsIterator<byte>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToByte(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(Math.Abs(expected - nextval) <= sensitivity)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: Boolean).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.Int16:
- {
- var iter = Subject.AsIterator<short>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToInt16(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(Math.Abs(expected - nextval) <= sensitivity)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: Boolean).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.UInt16:
- {
- var iter = Subject.AsIterator<ushort>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToUInt16(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(Math.Abs(expected - nextval) <= sensitivity)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: Boolean).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.Int32:
- {
- var iter = Subject.AsIterator<int>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToInt32(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(Math.Abs(expected - nextval) <= sensitivity)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: Boolean).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.UInt32:
- {
- var iter = Subject.AsIterator<uint>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToUInt32(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(Math.Abs(expected - nextval) <= sensitivity)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: Boolean).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.Int64:
- {
- var iter = Subject.AsIterator<long>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToInt64(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(Math.Abs(expected - nextval) <= sensitivity)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: Boolean).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.UInt64:
- {
- var iter = Subject.AsIterator<ulong>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToUInt64(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(Math.Abs((double)(expected - nextval)) <= sensitivity)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: Boolean).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.Char:
- {
- var iter = Subject.AsIterator<char>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToChar(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(Math.Abs(expected - nextval) <= sensitivity)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: Boolean).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.Double:
- {
- var iter = Subject.AsIterator<double>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToDouble(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(Math.Abs(expected - nextval) <= sensitivity)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: Boolean).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.Single:
- {
- var iter = Subject.AsIterator<float>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToSingle(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(Math.Abs(expected - nextval) <= sensitivity)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: Boolean).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }
-
- break;
- }
-
- case NPTypeCode.Decimal:
- {
- var iter = Subject.AsIterator<decimal>();
- var next = iter.MoveNext;
- var hasnext = iter.HasNext;
- for (int i = 0; i < values.Length; i++)
- {
- Execute.Assertion
- .ForCondition(hasnext())
- .FailWith($"Expected the NDArray to have atleast {values.Length} but in fact it has size of {i}.");
-
- var expected = Convert.ToDecimal(values[i]);
- var nextval = next();
-
- Execute.Assertion
- .ForCondition(Math.Abs(expected - nextval) <= (decimal)sensitivity)
- .FailWith($"Expected NDArray's {{2}}th value to be {{0}}, but found {{1}} (dtype: Boolean).\n------- Subject -------\n{Subject.ToString(false)}\n------- Expected -------\n[{string.Join(", ", values.Select(v => v.ToString()))}]", expected, nextval, i);
- }
-
- break;
- }
-
- default:
- throw new NotSupportedException();
- }*/
-
- #endregion
-
- return new AndConstraint<NDArrayAssertions>(this);
- }
- }
- }
|