public void TestCircleData() { var assert = new TypeAssert <Circle>(); var dimension1 = assert.Field <int>( "Dimension1", BindingFlags.NonPublic | BindingFlags.Instance ); var dimension2 = assert.Field <int>( "Dimension2", BindingFlags.NonPublic | BindingFlags.Instance ); // var obj = new Circle(1, 2 ,3); dynamic obj = assert.New(1, 2, 3); Assert.AreEqual("Circle", obj.Name); Assert.AreEqual(1, obj.X); Assert.AreEqual(2, obj.Y); Assert.AreEqual(3, obj.Radius); Assert.AreEqual(3, dimension1.GetValue(obj)); Assert.AreEqual(3, dimension2.GetValue(obj)); Assert.AreEqual(28.274333882308138, obj.Area, 1E-10); Assert.AreEqual("(1, 2) radius: 3", obj.ToString()); obj.Radius = 7; Assert.AreEqual(7, dimension1.GetValue(obj)); Assert.AreEqual(7, dimension2.GetValue(obj)); Assert.AreEqual(153.93804002589985, obj.Area, 1E-10); Assert.AreEqual("(1, 2) radius: 7", obj.ToString()); }
public void TestTwoDimensionalShapeClass() { var assert = new TypeAssert <TwoDimensionalShape>(); assert.Extends <Shape>(); assert.Constructor( BindingFlags.NonPublic | BindingFlags.Instance, new Param <int>("x"), new Param <int>("y"), new Param <int>("dimension1"), new Param <int>("dimension2") ).Protected(); assert.Field <int>( "Dimension1", BindingFlags.Instance | BindingFlags.NonPublic ).Protected(); assert.Field <int>( "Dimension2", BindingFlags.Instance | BindingFlags.NonPublic ).Protected(); assert.Property <double>( "Area", BindingFlags.Instance | BindingFlags.Public | BindingFlags.GetProperty ).Virtual(); }
public void TestSquareData() { var assert = new TypeAssert <Square>(); var dimension1 = assert.Field <int>( "Dimension1", BindingFlags.NonPublic | BindingFlags.Instance ); var dimension2 = assert.Field <int>( "Dimension2", BindingFlags.NonPublic | BindingFlags.Instance ); // var obj = new Square(1, 2 ,3); dynamic obj = assert.New(1, 2, 3); Assert.AreEqual("Square", obj.Name); Assert.AreEqual(1, obj.X); Assert.AreEqual(2, obj.Y); Assert.AreEqual(3, obj.Side); Assert.AreEqual(3, dimension1.GetValue(obj)); Assert.AreEqual(3, dimension2.GetValue(obj)); Assert.AreEqual(9.0, obj.Area, 1E-10); Assert.AreEqual("(1, 2) side: 3", obj.ToString()); obj.Side = 7; Assert.AreEqual(7, dimension1.GetValue(obj)); Assert.AreEqual(7, dimension2.GetValue(obj)); Assert.AreEqual(49.0, obj.Area, 1E-10); Assert.AreEqual("(1, 2) side: 7", obj.ToString()); }
public void TestCircleClass() { var assert = new TypeAssert <Circle>(); assert.Extends <TwoDimensionalShape>(); assert.NonAbstract(); assert.Constructor( BindingFlags.Public | BindingFlags.Instance, new Param <int>("x"), new Param <int>("y"), new Param <int>("radius") ); assert.ConstructorCount(1); assert.Property <string>( "Name", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty ).Override(); assert.Property <double>( "Area", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty ).Override(); assert.Property <int>( "Radius", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty | BindingFlags.SetProperty ); assert.Method <string>( "ToString", BindingFlags.Public | BindingFlags.Instance ).Override(); assert.Field <int>( "Dimension1", BindingFlags.NonPublic | BindingFlags.Instance ).DeclaredIn <TwoDimensionalShape>(); assert.Field <int>( "Dimension2", BindingFlags.NonPublic | BindingFlags.Instance ).DeclaredIn <TwoDimensionalShape>(); }
public void TestThreeDimensionalShape() { #if !DEBUG Assert.Multiple(() => { #endif var assert = new TypeAssert<ThreeDimensionalShape>(); assert.Abstract(); assert.Extends<Shape>(); assert.Constructor( BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, new Param<int>("x"), new Param<int>("y"), new Param<int>("dimension1"), new Param<int>("dimension2"), new Param<int>("dimension3") ); assert.Field<int>( "Dimension1", BindingFlags.Instance | BindingFlags.NonPublic ).Protected(); assert.Field<int>( "Dimension2", BindingFlags.Instance | BindingFlags.NonPublic ).Protected(); assert.Field<int>( "Dimension3", BindingFlags.Instance | BindingFlags.NonPublic ).Protected(); assert.Property<double>( "Area", BindingFlags.Instance | BindingFlags.Public | BindingFlags.GetProperty ).Abstract(); assert.Property<double>( "Volume", BindingFlags.Instance | BindingFlags.Public | BindingFlags.GetProperty ).Abstract(); #if !DEBUG }); #endif }
public void TestTwoCalc() { #if !DEBUG Assert.Multiple(() => { #endif var assert = new TypeAssert<TwoCalc>(); assert.Class(); assert.Implements<ICalc>(); assert.Constructor( BindingFlags.Public | BindingFlags.Instance, new Param<int>("a"), new Param<int>("b") ); assert.Field<int>( "_a", BindingFlags.NonPublic | BindingFlags.Instance ).Private().ReadOnly(); assert.Field<int>( "_b", BindingFlags.NonPublic | BindingFlags.Instance ).Private().ReadOnly(); assert.Method<int>( "Calculate", BindingFlags.Public | BindingFlags.Instance ).Virtual(); assert.Method<string>( "ToString", BindingFlags.Public | BindingFlags.Instance ).Override(); dynamic calc; calc = assert.New(1, 2); Assert.AreEqual(5, calc.Calculate()); Assert.AreEqual("1, 2", calc.ToString()); calc = assert.New(-10, 4); Assert.AreEqual(-2, calc.Calculate()); Assert.AreEqual("-10, 4", calc.ToString()); #if !DEBUG }); #endif }
public void TestAccountClass() { #if !DEBUG Assert.Multiple(() => { #endif var accountClass = new TypeAssert<Account>(); var balanceField = accountClass.Field<decimal>("_balance", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField | BindingFlags.SetField ).NonPublic(); var nameProperty = accountClass.Property<string>("Name", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty); var balanceProperty = accountClass.Property<decimal>("Balance", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty); balanceProperty.NotAutoImplemented(); var constructor = accountClass.Constructor( BindingFlags.Public | BindingFlags.Instance, new Param<string>("name"), new Param<decimal>("balance")); accountClass.Method("Deposit", BindingFlags.Public | BindingFlags.Instance, new Param<decimal>("depositAmount")); accountClass.Method("Withdraw", BindingFlags.Public | BindingFlags.Instance, new Param<decimal>("withdrawAmount") ); // testing dynamic account; account = accountClass.New("Darth Vader", -1.1m); Assert.AreEqual(0m, balanceField.GetValue(account)); Assert.AreEqual("Darth Vader", account.Name); Assert.AreEqual(0m, account.Balance); account = accountClass.New("Padme Amidala", 1.49m); Assert.AreEqual(1.49m, balanceField.GetValue(account)); Assert.AreEqual("Padme Amidala", account.Name); Assert.AreEqual(1.49m, account.Balance); #if !DEBUG }); #endif }
public void TestSphereData() { var assert = new TypeAssert <Sphere>(); // var obj = new Sphere(1, 2 ,3); var dimension1 = assert.Field <int>( "Dimension1", BindingFlags.NonPublic | BindingFlags.Instance ); var dimension2 = assert.Field <int>( "Dimension2", BindingFlags.NonPublic | BindingFlags.Instance ); var dimension3 = assert.Field <int>( "Dimension3", BindingFlags.NonPublic | BindingFlags.Instance ); dynamic obj = assert.New(2, 1, 4); Assert.AreEqual("Sphere", obj.Name); Assert.AreEqual(2, obj.X); Assert.AreEqual(1, obj.Y); Assert.AreEqual(4, obj.Radius); Assert.AreEqual(4, dimension1.GetValue(obj)); Assert.AreEqual(4, dimension2.GetValue(obj)); Assert.AreEqual(4, dimension3.GetValue(obj)); Assert.AreEqual(201.06192982974676, obj.Area, 1E-10); Assert.AreEqual(268.08257310632899, obj.Volume, 1E-10); Assert.AreEqual("(2, 1) radius: 4", obj.ToString()); obj.Radius = 7; Assert.AreEqual(7, dimension1.GetValue(obj)); Assert.AreEqual(7, dimension2.GetValue(obj)); Assert.AreEqual(615.75216010359941, obj.Area, 1E-10); Assert.AreEqual(1436.7550402417321, obj.Volume, 1E-10); Assert.AreEqual("(2, 1) radius: 7", obj.ToString()); }
public void TestCubeData() { var assert = new TypeAssert <Cube>(); var dimension1 = assert.Field <int>( "Dimension1", BindingFlags.NonPublic | BindingFlags.Instance ); var dimension2 = assert.Field <int>( "Dimension2", BindingFlags.NonPublic | BindingFlags.Instance ); var dimension3 = assert.Field <int>( "Dimension3", BindingFlags.NonPublic | BindingFlags.Instance ); // var obj = new Sphere(1, 2 ,3); dynamic obj = assert.New(3, 5, 2); Assert.AreEqual("Cube", obj.Name); Assert.AreEqual(3, obj.X); Assert.AreEqual(5, obj.Y); Assert.AreEqual(2, obj.Side); Assert.AreEqual(2, dimension1.GetValue(obj)); Assert.AreEqual(2, dimension2.GetValue(obj)); Assert.AreEqual(2, dimension3.GetValue(obj)); Assert.AreEqual(24, obj.Area, 1E-10); Assert.AreEqual(8, obj.Volume, 1E-10); Assert.AreEqual("(3, 5) side: 2", obj.ToString()); obj.Side = 7; Assert.AreEqual(7, dimension1.GetValue(obj)); Assert.AreEqual(7, dimension2.GetValue(obj)); Assert.AreEqual(294, obj.Area, 1E-10); Assert.AreEqual(343, obj.Volume, 1E-10); Assert.AreEqual("(3, 5) side: 7", obj.ToString()); }
public void TestTwoCalcClass() { var assert = new TypeAssert <TwoCalc>(); assert.Class(); assert.Extends <BaseCalc>(); assert.Constructor( BindingFlags.Public | BindingFlags.Instance, new Param <int>("a"), new Param <int>("b") ); assert.Field <int>( "_a", BindingFlags.NonPublic | BindingFlags.Instance ).Private().ReadOnly(); assert.Field <int>( "_b", BindingFlags.NonPublic | BindingFlags.Instance ).Private().ReadOnly(); assert.Method <int>( "Calculate", BindingFlags.Public | BindingFlags.Instance ).Override().Virtual(); assert.Method <string>( "ToString", BindingFlags.Public | BindingFlags.Instance ).Override(); }
public void TestEmployeeClass() { #if !DEBUG Assert.Multiple(() => { #endif var employeeClass = new TypeAssert<Employee>(); var firstName = employeeClass.Property<string>( "FirstName", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty ).AutoImplemented(); var lastName = employeeClass.Property<string>( "LastName", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty ).AutoImplemented(); var monthlySalaryField = employeeClass.Field<decimal>( "_monthlySalary", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField ); var monthlySalary = employeeClass.Property<decimal>( "MonthlySalary", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty | BindingFlags.SetProperty ).NotAutoImplemented(); var annualSalary = employeeClass.Property<decimal>( "AnnualSalary", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty ).NotAutoImplemented(); Employee employee = employeeClass.New("A", "B", 1234.56m); Assert.AreEqual(1234.56m, monthlySalaryField.GetValue(employee), "Private field must contain an intial value."); #if !DEBUG }); #endif }
public void TestAggregator() { #if !DEBUG Assert.Multiple(() => { #endif var aggregator = new TypeAssert<Aggregator>(); aggregator.Class(); aggregator.Abstract(); aggregator.Field<List<int>>("Numbers", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField)?.Protected()?.ReadOnly(); aggregator.Constructor( BindingFlags.Public | BindingFlags.Instance, new Param<int[]>("numbers")); aggregator.Property<int>( "Value", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty )?.Abstract(); aggregator.Method( "Append", BindingFlags.Public | BindingFlags.Instance, new Param<Aggregator>("aggregators") )?.Virtual(); aggregator.Method<string>( "ToString", BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly ); #if !DEBUG }); #endif }
public void TestAverage() { #if !DEBUG Assert.Multiple(() => { #endif var average = new TypeAssert<Average>(); average.Extends<Sum>(); average.Class(); average.Field<List<int>>("_count", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetField)?.Private()?.ReadOnly(); average.Constructor( BindingFlags.Public | BindingFlags.Instance, new Param<int[]>("numbers")); average.Property<int>( "Value", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty )?.Override(); average.Property<decimal>( "DecimalValue", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty ); average.Property<int>( "Value", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty )?.Override(); #if !DEBUG }); #endif }
public void TestListCalcClass() { var assert = new TypeAssert <ListCalc>(); assert.Extends <BaseCalc>(); assert.Class(); assert.Constructor( BindingFlags.Public | BindingFlags.Instance, new Param <List <BaseCalc> >("calculations") ); assert.Constructor( BindingFlags.Public | BindingFlags.Instance, new Param <int[]>("values") { Params = true } ); assert.Field <List <BaseCalc> >( "Calculations", BindingFlags.NonPublic | BindingFlags.Instance ).Protected().ReadOnly(); assert.Method <int>( "Calculate", BindingFlags.Public | BindingFlags.Instance ).Override(); assert.Method <string>( "ToString", BindingFlags.Public | BindingFlags.Instance ).Override(); }
public void TestSphere() { #if !DEBUG Assert.Multiple(() => { #endif var assert = new TypeAssert<Sphere>(); assert.Extends<ThreeDimensionalShape>(); assert.NonAbstract(); assert.Constructor( BindingFlags.Public | BindingFlags.Instance, new Param<int>("x"), new Param<int>("y"), new Param<int>("radius") ); assert.ConstructorCount(1); assert.Property<string>( "Name", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty ).Override(); assert.Property<double>( "Area", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty ).Override(); assert.Property<double>( "Volume", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty ).Override(); assert.Property<int>( "Radius", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty | BindingFlags.SetProperty ); assert.Method<string>( "ToString", BindingFlags.Public | BindingFlags.Instance ).Override(); var dimension1 = assert.Field<int>( "Dimension1", BindingFlags.NonPublic | BindingFlags.Instance ).DeclaredIn<ThreeDimensionalShape>(); var dimension2 = assert.Field<int>( "Dimension2", BindingFlags.NonPublic | BindingFlags.Instance ).DeclaredIn<ThreeDimensionalShape>(); var dimension3 = assert.Field<int>( "Dimension3", BindingFlags.NonPublic | BindingFlags.Instance ).DeclaredIn<ThreeDimensionalShape>(); // var obj = new Sphere(1, 2 ,3); dynamic obj = assert.New(2, 1, 4); Assert.AreEqual("Sphere", obj.Name); Assert.AreEqual(2, obj.X); Assert.AreEqual(1, obj.Y); Assert.AreEqual(4, obj.Radius); Assert.AreEqual(4, dimension1.GetValue(obj)); Assert.AreEqual(4, dimension2.GetValue(obj)); Assert.AreEqual(4, dimension3.GetValue(obj)); Assert.AreEqual(201.06192982974676, obj.Area, 1E-10); Assert.AreEqual(268.08257310632899, obj.Volume, 1E-10); Assert.AreEqual("(2, 1) radius: 4", obj.ToString()); obj.Radius = 7; Assert.AreEqual(7, dimension1.GetValue(obj)); Assert.AreEqual(7, dimension2.GetValue(obj)); Assert.AreEqual(615.75216010359941, obj.Area, 1E-10); Assert.AreEqual(1436.7550402417321, obj.Volume, 1E-10); Assert.AreEqual("(2, 1) radius: 7", obj.ToString()); #if !DEBUG }); #endif }
public void TestParkClass() { #if !DEBUG Assert.Multiple(() => { #endif var assert = new TypeAssert<Park>(); assert.Class(); assert.NonAbstract(); assert.Field<string>( "_name", BindingFlags.Instance | BindingFlags.NonPublic ).Private().ReadOnly(); assert.Field<string>( "_address", BindingFlags.Instance | BindingFlags.NonPublic ).Private().ReadOnly(); assert.Field<FacilityType>( "_type", BindingFlags.Instance | BindingFlags.NonPublic ).Private().ReadOnly(); assert.Field<string>( "_phone", BindingFlags.Instance | BindingFlags.NonPublic ).Private().ReadOnly(); assert.Field<int>( "_openingHour", BindingFlags.Instance | BindingFlags.NonPublic ).Private().ReadOnly(); assert.Field<int>( "_closingHour", BindingFlags.Instance | BindingFlags.NonPublic ).Private().ReadOnly(); assert.Field<decimal>( "_fee", BindingFlags.Instance | BindingFlags.NonPublic ).Private().ReadOnly(); assert.Constructor( BindingFlags.Public | BindingFlags.Instance, new Param<string>("name"), new Param<string>("address"), new Param<FacilityType>("type"), new Param<string>("phone"), new Param<int>("openingHour"), new Param<int>("closingHour"), new Param<decimal>("fee") ); assert.Property<string>( "Info", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty ); assert.Property<string>( "Contact", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty ); assert.Method<decimal>( "CalculateFee", BindingFlags.Public | BindingFlags.Instance, new Param<int>("numberOfVisitors") ); assert.Method<decimal>( "CalculateFee", BindingFlags.Public | BindingFlags.Static, new Param<int>("numberOfVisitors"), new Param<Park[]>("parks") ); assert.Method( "Show", BindingFlags.Public | BindingFlags.Static, new Param<Park[]>("parks") ); #if !DEBUG }); #endif }
public void TestListCalc() { #if !DEBUG Assert.Multiple(() => { #endif var assert = new TypeAssert<ListCalc>(); assert.Class(); assert.Constructor( BindingFlags.Public | BindingFlags.Instance, new Param<List<ICalc>>("calculations") ); assert.Constructor( BindingFlags.Public | BindingFlags.Instance, new Param<int[]>("values") { Params = true } ); assert.Field<List<ICalc>>( "Calculations", BindingFlags.NonPublic | BindingFlags.Instance ).Protected().ReadOnly(); assert.Method<int>( "Calculate", BindingFlags.Public | BindingFlags.Instance ); assert.Method<string>( "ToString", BindingFlags.Public | BindingFlags.Instance ).Override(); dynamic o; assert.Catch<ArgumentNullException>(() => o = assert.New(null)); assert.Catch<ArgumentException>(() => o = assert.New()); assert.Catch<ArgumentException>(() => o = assert.New(0)); assert.Catch<ArgumentException>(() => o = assert.New(1)); assert.Catch<ArgumentException>(() => o = assert.New(1000)); o = assert.New(1, 2); Assert.AreEqual(5, o.Calculate()); Assert.AreEqual("1, 2", o.ToString()); o = assert.New(1, 2, 3); Assert.AreEqual(14, o.Calculate()); Assert.AreEqual("1, 2, 3", o.ToString()); o = assert.New(1, 2, 3, 4); Assert.AreEqual(16, o.Calculate()); Assert.AreEqual("1, 2; 3, 4", o.ToString()); o = assert.New(1, 2, 3, 4, 5); Assert.AreEqual(31, o.Calculate()); Assert.AreEqual("1, 2; 3, 4, 5", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6); Assert.AreEqual(46, o.Calculate()); Assert.AreEqual("1, 2, 3; 4, 5, 6", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7); Assert.AreEqual(51, o.Calculate()); Assert.AreEqual("1, 2; 3, 4, 5; 6, 7", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8); Assert.AreEqual(75, o.Calculate()); Assert.AreEqual("1, 2; 3, 4, 5; 6, 7, 8", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8, 9); Assert.AreEqual(96, o.Calculate()); Assert.AreEqual("1, 2, 3; 4, 5, 6; 7, 8, 9", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); Assert.AreEqual(104, o.Calculate()); Assert.AreEqual("1, 2; 3, 4, 5; 6, 7, 8; 9, 10", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11); Assert.AreEqual(137, o.Calculate()); Assert.AreEqual("1, 2; 3, 4, 5; 6, 7, 8; 9, 10, 11", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); Assert.AreEqual(164, o.Calculate()); Assert.AreEqual("1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13); Assert.AreEqual(175, o.Calculate()); Assert.AreEqual("1, 2; 3, 4, 5; 6, 7, 8; 9, 10, 11; 12, 13", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14); Assert.AreEqual(217, o.Calculate()); Assert.AreEqual("1, 2; 3, 4, 5; 6, 7, 8; 9, 10, 11; 12, 13, 14", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); Assert.AreEqual(250, o.Calculate()); Assert.AreEqual("1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12; 13, 14, 15", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16); Assert.AreEqual(264, o.Calculate()); Assert.AreEqual("1, 2; 3, 4, 5; 6, 7, 8; 9, 10, 11; 12, 13, 14; 15, 16", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17); Assert.AreEqual(315, o.Calculate()); Assert.AreEqual("1, 2; 3, 4, 5; 6, 7, 8; 9, 10, 11; 12, 13, 14; 15, 16, 17", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18); Assert.AreEqual(354, o.Calculate()); Assert.AreEqual("1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12; 13, 14, 15; 16, 17, 18", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19); Assert.AreEqual(371, o.Calculate()); Assert.AreEqual("1, 2; 3, 4, 5; 6, 7, 8; 9, 10, 11; 12, 13, 14; 15, 16, 17; 18, 19", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20); Assert.AreEqual(431, o.Calculate()); Assert.AreEqual("1, 2; 3, 4, 5; 6, 7, 8; 9, 10, 11; 12, 13, 14; 15, 16, 17; 18, 19, 20", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21); Assert.AreEqual(476, o.Calculate()); Assert.AreEqual("1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12; 13, 14, 15; 16, 17, 18; 19, 20, 21", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22); Assert.AreEqual(496, o.Calculate()); Assert.AreEqual("1, 2; 3, 4, 5; 6, 7, 8; 9, 10, 11; 12, 13, 14; 15, 16, 17; 18, 19, 20; 21, 22", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23); Assert.AreEqual(565, o.Calculate()); Assert.AreEqual("1, 2; 3, 4, 5; 6, 7, 8; 9, 10, 11; 12, 13, 14; 15, 16, 17; 18, 19, 20; 21, 22, 23", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24); Assert.AreEqual(616, o.Calculate()); Assert.AreEqual("1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12; 13, 14, 15; 16, 17, 18; 19, 20, 21; 22, 23, 24", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25); Assert.AreEqual(639, o.Calculate()); Assert.AreEqual("1, 2; 3, 4, 5; 6, 7, 8; 9, 10, 11; 12, 13, 14; 15, 16, 17; 18, 19, 20; 21, 22, 23; 24, 25", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26); Assert.AreEqual(717, o.Calculate()); Assert.AreEqual("1, 2; 3, 4, 5; 6, 7, 8; 9, 10, 11; 12, 13, 14; 15, 16, 17; 18, 19, 20; 21, 22, 23; 24, 25, 26", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27); Assert.AreEqual(774, o.Calculate()); Assert.AreEqual("1, 2, 3; 4, 5, 6; 7, 8, 9; 10, 11, 12; 13, 14, 15; 16, 17, 18; 19, 20, 21; 22, 23, 24; 25, 26, 27", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28); Assert.AreEqual(800, o.Calculate()); Assert.AreEqual("1, 2; 3, 4, 5; 6, 7, 8; 9, 10, 11; 12, 13, 14; 15, 16, 17; 18, 19, 20; 21, 22, 23; 24, 25, 26; 27, 28", o.ToString()); o = assert.New(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29); Assert.AreEqual(887, o.Calculate()); Assert.AreEqual("1, 2; 3, 4, 5; 6, 7, 8; 9, 10, 11; 12, 13, 14; 15, 16, 17; 18, 19, 20; 21, 22, 23; 24, 25, 26; 27, 28, 29", o.ToString()); o = assert.New(3, 86, 36, 49, 71, 29, 95, 9, 31, 11, 93, 36, 46, 87, 50, 34, 72, 44, 83, 38, 17, 91, 56, 66, 99, 34, 25, 38, 99, 86, 95, 91, 84, 22, 34, 30, 27, 97, 47, 81, 84, 97, 10, 80, 33, 67, 70, 88, 77, 49, 52, 70, 15, 35, 18, 11, 31, 69, 50, 38, 4, 57, 10, 45, 16, 3, 52, 25, 54, 20, 7, 75, 97, 2, 54, 20, 82, 75, 33, 32, 63, 37, 60, 51, 35, 26, 76, 49, 4, 23, 99, 57, 47, 10, 77, 27, 87, 65, 65, 31); Assert.AreEqual(10105, o.Calculate()); Assert.AreEqual("3, 86; 36, 49, 71; 29, 95, 9; 31, 11, 93; 36, 46, 87; 50, 34, 72; 44, 83, 38; 17, 91, 56; 66, 99, 34; 25, 38, 99; 86, 95, 91; 84, 22, 34; 30, 27, 97; 47, 81, 84; 97, 10, 80; 33, 67, 70; 88, 77, 49; 52, 70, 15; 35, 18, 11; 31, 69, 50; 38, 4, 57; 10, 45, 16; 3, 52, 25; 54, 20, 7; 75, 97, 2; 54, 20, 82; 75, 33, 32; 63, 37, 60; 51, 35, 26; 76, 49, 4; 23, 99, 57; 47, 10, 77; 27, 87, 65; 65, 31", o.ToString()); /* var sb = new StringBuilder(); var list = new List<int>(); for (int i = 0; i < 100; i++) { list.Add(Utils.Random.Next(1, 100)); } var a = list.ToArray(); o = assert.New(a); sb.AppendLine($"o = assert.New({string.Join(", ", list.ToArray())});"); sb.AppendLine($"Assert.AreEqual({o.Calculate()}, o.Calculate());"); sb.AppendLine($"Assert.AreEqual(\"{o}\", o.ToString());"); sb.AppendLine(); Assert.Fail(sb.ToString()); */ #if !DEBUG }); #endif }
public void TestThreeCalc() { #if !DEBUG Assert.Multiple(() => { #endif var assert = new TypeAssert<ThreeCalc>(); assert.Class(); assert.Extends<TwoCalc>(); assert.Implements<ICalc>(); assert.Constructor( BindingFlags.Public | BindingFlags.Instance, new Param<int>("a"), new Param<int>("b"), new Param<int>("c") ); assert.NonField<int>( "_a", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance ); assert.NonField<int>( "_b", BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance ); assert.Field<int>( "_c", BindingFlags.NonPublic | BindingFlags.Instance ).Private().ReadOnly(); assert.Method<int>( "Calculate", BindingFlags.Public | BindingFlags.Instance ).Override(); assert.Method<string>( "ToString", BindingFlags.Public | BindingFlags.Instance ).Override(); dynamic calc; calc = assert.New(1, 2, 3); Assert.AreEqual(14, calc.Calculate()); Assert.AreEqual("1, 2, 3", calc.ToString()); calc = assert.New(1, 3, 5); Assert.AreEqual(22, calc.Calculate()); Assert.AreEqual("1, 3, 5", calc.ToString()); calc = assert.New(-10, 4, -100); Assert.AreEqual(-302, calc.Calculate()); Assert.AreEqual("-10, 4, -100", calc.ToString()); #if !DEBUG }); #endif }
public void TestInvoiceClass() { #if !DEBUG Assert.Multiple(() => { #endif var invoiceClass = new TypeAssert<Invoice>(); var partNumber = invoiceClass.Property<string>("PartNumber", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty | BindingFlags.SetProperty ).AutoImplemented(); var partDescription = invoiceClass.Property<string>("PartDescription", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty | BindingFlags.SetProperty ).AutoImplemented(); var quantityField = invoiceClass.Field<int>("_quantity", BindingFlags.NonPublic | BindingFlags.Instance ); var pricePerItemField = invoiceClass.Field<decimal>("_pricePerItem", BindingFlags.NonPublic | BindingFlags.Instance ); var quantity = invoiceClass.Property<int>("Quantity", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty | BindingFlags.SetProperty ).NotAutoImplemented(); var pricePerItem = invoiceClass.Property<decimal>("PricePerItem", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty | BindingFlags.SetProperty ).NotAutoImplemented(); var constructor = invoiceClass.Constructor( BindingFlags.Public | BindingFlags.Instance, new Param<string>("partNumber"), new Param<string>("partDescription"), new Param<int>("quantity"), new Param<decimal>("price")); var getInvoiceAmount = invoiceClass.Method<decimal>( "GetInvoiceAmount", BindingFlags.Public | BindingFlags.Instance); // field testing Invoice invoice = invoiceClass.New("1234", "Hammer", 2, 14.95m); Assert.AreEqual(2, quantityField.GetValue(invoice), "Initial Quantity"); Assert.AreEqual(14.95m, pricePerItemField.GetValue(invoice), "Initial price per item"); #if !DEBUG }); #endif }
public void TestCube() { #if !DEBUG Assert.Multiple(() => { #endif var assert = new TypeAssert<Cube>(); assert.Extends<ThreeDimensionalShape>(); assert.NonAbstract(); assert.Constructor( BindingFlags.Public | BindingFlags.Instance, new Param<int>("x"), new Param<int>("y"), new Param<int>("side") ); assert.ConstructorCount(1); assert.Property<string>( "Name", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty ).Override(); assert.Property<double>( "Area", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty ).Override(); assert.Property<double>( "Volume", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty ).Override(); assert.Property<int>( "Side", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty | BindingFlags.SetProperty ); assert.Method<string>( "ToString", BindingFlags.Public | BindingFlags.Instance ).Override(); var dimension1 = assert.Field<int>( "Dimension1", BindingFlags.NonPublic | BindingFlags.Instance ).DeclaredIn<ThreeDimensionalShape>(); var dimension2 = assert.Field<int>( "Dimension2", BindingFlags.NonPublic | BindingFlags.Instance ).DeclaredIn<ThreeDimensionalShape>(); var dimension3 = assert.Field<int>( "Dimension3", BindingFlags.NonPublic | BindingFlags.Instance ).DeclaredIn<ThreeDimensionalShape>(); // var obj = new Sphere(1, 2 ,3); dynamic obj = assert.New(3, 5, 2); Assert.AreEqual("Cube", obj.Name); Assert.AreEqual(3, obj.X); Assert.AreEqual(5, obj.Y); Assert.AreEqual(2, obj.Side); Assert.AreEqual(2, dimension1.GetValue(obj)); Assert.AreEqual(2, dimension2.GetValue(obj)); Assert.AreEqual(2, dimension3.GetValue(obj)); Assert.AreEqual(24, obj.Area, 1E-10); Assert.AreEqual(8, obj.Volume, 1E-10); Assert.AreEqual("(3, 5) side: 2", obj.ToString()); obj.Side = 7; Assert.AreEqual(7, dimension1.GetValue(obj)); Assert.AreEqual(7, dimension2.GetValue(obj)); Assert.AreEqual(294, obj.Area, 1E-10); Assert.AreEqual(343, obj.Volume, 1E-10); Assert.AreEqual("(3, 5) side: 7", obj.ToString()); #if !DEBUG }); #endif }
public void TestCircle() { #if !DEBUG Assert.Multiple(() => { #endif var assert = new TypeAssert<Circle>(); assert.Extends<TwoDimensionalShape>(); assert.NonAbstract(); assert.Constructor( BindingFlags.Public | BindingFlags.Instance, new Param<int>("x"), new Param<int>("y"), new Param<int>("radius") ); assert.ConstructorCount(1); assert.Property<string>( "Name", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty ).Override(); assert.Property<double>( "Area", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty ).Override(); assert.Property<int>( "Radius", BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty | BindingFlags.SetProperty ); assert.Method<string>( "ToString", BindingFlags.Public | BindingFlags.Instance ).Override(); var dimension1 = assert.Field<int>( "Dimension1", BindingFlags.NonPublic | BindingFlags.Instance ).DeclaredIn<TwoDimensionalShape>(); var dimension2 = assert.Field<int>( "Dimension2", BindingFlags.NonPublic | BindingFlags.Instance ).DeclaredIn<TwoDimensionalShape>(); // var obj = new Circle(1, 2 ,3); dynamic obj = assert.New(1, 2, 3); Assert.AreEqual("Circle", obj.Name); Assert.AreEqual(1, obj.X); Assert.AreEqual(2, obj.Y); Assert.AreEqual(3, obj.Radius); Assert.AreEqual(3, dimension1.GetValue(obj)); Assert.AreEqual(3, dimension2.GetValue(obj)); Assert.AreEqual(28.274333882308138, obj.Area, 1E-10); Assert.AreEqual("(1, 2) radius: 3", obj.ToString()); obj.Radius = 7; Assert.AreEqual(7, dimension1.GetValue(obj)); Assert.AreEqual(7, dimension2.GetValue(obj)); Assert.AreEqual(153.93804002589985, obj.Area, 1E-10); Assert.AreEqual("(1, 2) radius: 7", obj.ToString()); #if !DEBUG }); #endif }