/// <summary> /// The Figure_Compilation_Helper_Test. /// </summary> /// <param name="str">The str<see cref="IInstant"/>.</param> /// <param name="fom">The fom<see cref="FieldsAndPropertiesModel"/>.</param> /// <returns>The <see cref="IFigure"/>.</returns> private IFigure Figure_Compilation_Helper_Test(IInstant str, FieldsAndPropertiesModel fom) { IFigure rts = (IFigure)str.New(); fom.Id = 202; rts[0] = 202; Assert.Equal(fom.Id, (rts)[0]); (rts)["Id"] = 404; Assert.NotEqual(fom.Id, (rts)[nameof(fom.Id)]); (rts)[nameof(fom.Name)] = fom.Name; Assert.Equal(fom.Name, (rts)[nameof(fom.Name)]); (rts).SerialCode = new Ussn(DateTime.Now.ToBinary()); string hexTetra = (rts).SerialCode.ToString(); Ussn ssn = new Ussn(hexTetra); Assert.Equal(ssn, (rts).SerialCode); for (int i = 1; i < str.Rubrics.Count; i++) { var r = str.Rubrics[i].RubricInfo; if (r.MemberType == MemberTypes.Field) { var fi = fom.GetType().GetField(((FieldInfo)r).Name); if (fi != null) { (rts)[r.Name] = fi.GetValue(fom); } } if (r.MemberType == MemberTypes.Property) { var pi = fom.GetType().GetProperty(((PropertyInfo)r).Name); if (pi != null) { (rts)[r.Name] = pi.GetValue(fom); } } } for (int i = 1; i < str.Rubrics.Count; i++) { var r = str.Rubrics[i].RubricInfo; if (r.MemberType == MemberTypes.Field) { var fi = fom.GetType().GetField(((FieldInfo)r).Name); if (fi != null) { Assert.Equal((rts)[r.Name], fi.GetValue(fom)); } } if (r.MemberType == MemberTypes.Property) { var pi = fom.GetType().GetProperty(((PropertyInfo)r).Name); if (pi != null) { Assert.Equal((rts)[r.Name], pi.GetValue(fom)); } } } return(rts); }
public ExtractorTest() { Random r = new Random(); r.NextBytes(source); str = new InstantFigure(InstantFigureMocks.InstantFigure_MemberRubric_FieldsAndPropertiesModel(), "InstantFigure_MemberRubric_FieldsAndPropertiesModel_ValueType"); FieldsAndPropertiesModel fom = new FieldsAndPropertiesModel(); table = new InstantMultemic(str, "InstantMultemic_Compilation_Test"); rctab = table.New(); rcobj = rctab.NewFigure(); foreach (var rubric in str.Rubrics.AsValues()) { if (rubric.FigureFieldId > -1) { var field = fom.GetType().GetField(rubric.FigureField.Name, BindingFlags.NonPublic | BindingFlags.Instance); if (field == null) { field = fom.GetType().GetField(rubric.RubricName); } if (field == null) { var prop = fom.GetType().GetProperty(rubric.RubricName); if (prop != null) { rcobj[rubric.FigureFieldId] = prop.GetValue(fom); } } else { rcobj[rubric.FigureFieldId] = field.GetValue(fom); } } } for (int i = 0; i < 1000; i++) { IFigure nrcstr = rctab.NewFigure(); nrcstr.ValueArray = rcobj.ValueArray; rctab.Add(i, nrcstr); } structBytes = new byte[rctab.FigureSize]; structBytes2 = new byte[rctab.FigureSize]; rcobj.StructureTo(ref structBytes, 0); }