public static void Main(string[] args) { try { System.TimeSpan ts; System.DateTime begin; Trace("CTEST_FULL_OUTPUT (Avoid ctest truncation of output)\n"); Trace("Begin ManualTestPerformance.Main\n"); Vehicle v1 = new Vehicle(); uint i = 0; uint maxi = 2999006;//v1.GetMaxIndex(); Trace("Set/GetValue loop...\n"); begin = System.DateTime.Now; for (i= 0; i<maxi; ++i) { v1.TSetValue(i, v1.TGetValue(i+1)); } ts = System.DateTime.Now - begin; ReportTiming("int", ts, maxi); Trace("Set/GetDoubleValue loop...\n"); begin = System.DateTime.Now; for (i = 0; i < maxi; ++i) { v1.TSetDoubleValue(i, v1.TGetDoubleValue(i+1)); } ts = System.DateTime.Now - begin; ReportTiming("double", ts, maxi); Trace("Set/GetStringValue loop...\n"); begin = System.DateTime.Now; for (i = 0; i < maxi; ++i) { v1.TSetStringValue(i, v1.TGetStringValue(i+1)); } ts = System.DateTime.Now - begin; ReportTiming("string", ts, maxi); Trace("Set/GetObjectValue loop...\n"); begin = System.DateTime.Now; for (i = 0; i < maxi; ++i) { v1.TSetObjectValue(i, v1.TGetObjectValue(i+1)); } ts = System.DateTime.Now - begin; ReportTiming("object", ts, maxi); Trace("End ManualTestPerformance.Main\n"); } catch(Exception exc) { Trace(exc.ToString()); throw; } }
public static void Main(string[] args) { Trace("CTEST_FULL_OUTPUT (Avoid ctest truncation of output)\n"); Trace("Begin ManualTestPerformanceArrayAccess.Main\n"); Trace("\n"); Vehicle v1 = new Vehicle(); int length = (int)v1.TGetInfoArrayLength(); int maxi = 3 * (int)v1.MaxIndex; WriteNativeCsharpArrayElements(length, maxi); WriteCppArrayElements(length, maxi, v1); Trace("End ManualTestPerformanceArrayAccess.Main\n"); }
/// <summary> /// Gets a value indicating whether the detector detects the <paramref name="vehicle" />. /// </summary> /// <param name="vehicle">The vehicle that should be checked.</param> public abstract bool DetectsVehicle(Vehicle vehicle);
public static unsafe void WriteCppArrayElements(int length, int maxi, Vehicle v1) { try { System.TimeSpan ts; System.DateTime begin; int i = 0; float* af = (float*)v1.InfoArrayBase(); float lf = 0.0F; Trace("Direct C++ array write access from C# 'af[i] = lf' loop...\n"); begin = System.DateTime.Now; for (i = 0; i < maxi; ++i) { af[i % length] = lf; } ts = System.DateTime.Now - begin; ReportTiming("float", ts, (uint)maxi); Trace("Unchecked vtable write access 'v1.SetInfoArrayElementUnchecked(i, lf)' loop...\n"); begin = System.DateTime.Now; for (i = 0; i < maxi; ++i) { v1.TSetInfoArrayElementUnchecked(i % length, lf); } ts = System.DateTime.Now - begin; ReportTiming("float", ts, (uint)maxi); Trace("Unchecked vtable read access 'lf = v1.GetInfoArrayElementUnchecked(i)' loop...\n"); begin = System.DateTime.Now; for (i = 0; i < maxi; ++i) { lf = v1.TGetInfoArrayElementUnchecked(i % length); } ts = System.DateTime.Now - begin; ReportTiming("float", ts, (uint)maxi); Trace("Checked vtable write access 'v1.SetInfoArrayElementChecked(i, lf)' loop...\n"); begin = System.DateTime.Now; for (i = 0; i < maxi; ++i) { v1.TSetInfoArrayElementChecked(i % length, lf); } ts = System.DateTime.Now - begin; ReportTiming("float", ts, (uint)maxi); Trace("Checked vtable read access 'lf = v1.GetInfoArrayElementChecked(i)' loop...\n"); begin = System.DateTime.Now; for (i = 0; i < maxi; ++i) { lf = v1.TGetInfoArrayElementChecked(i % length); } ts = System.DateTime.Now - begin; ReportTiming("float", ts, (uint)maxi); } catch (Exception exc) { Trace(exc.ToString()); throw; } }
public static void TestFloatArrayMethods(Vehicle v1) { float[] fa1; float[] fa2; int i; int n; Trace("\n"); Trace("\n"); Trace(String.Format("fa1\n")); fa1 = v1.InfoArray; foreach (float f in fa1) { Trace(String.Format(" f: {0}\n", f)); } Trace("\n"); i = 0; n = fa1.GetLength(0); for (i = 0; i < n; ++i) { fa1[i] = 2.2f; } fa1[0] = 1111.11111111f; fa1[fa1.Length-1] = 3333.33333333f; v1.InfoArray = fa1; Trace(String.Format("fa2\n")); fa2 = v1.InfoArray; foreach (float f in fa2) { Trace(String.Format(" f: {0}\n", f)); } Trace("\n"); }
public static void Main(string[] args) { Trace("CTEST_FULL_OUTPUT (Avoid ctest truncation of output)\n"); Trace("Begin ManualTestEvent.Main\n"); ManualTestEvent te = new ManualTestEvent(); Vehicle v1 = new Vehicle(); v1.FuelLevelChanged += new AbstractVehicle.FuelLevelChangedEventHandler(te.FuelLevelChanged); v1.FuelLevel = 0.77; v1.FuelLevel = 0.77; v1.FuelLevel = 0.77; v1.FuelLevel = 1.0; v1.FuelLevel = 1.0; v1.FuelLevel = 1.0; TestFloatArrayMethods(v1); VehicleDescriptor desc = new VehicleDescriptor(); try { desc = v1.TGetDescriptor(); } catch(System.Exception exc) { Trace("info: Caught exception calling v1.TGetDescriptor...\n"); Trace(" Is this an older version of mono with the 'struct cannot cross PInvoke boundary' bug?\n"); Trace("\n"); Trace(exc.ToString()); Trace("\n"); Trace("\n"); } Trace(String.Format("desc.AMarker: {0}\n", desc.AMarker)); Trace(String.Format("desc.BoolTest1: {0}\n", desc.BoolTest1)); Trace(String.Format("desc.BoolTest2: {0}\n", desc.BoolTest2)); Trace(String.Format("desc.c1: {0}\n", desc.c1)); Trace(String.Format("desc.ColorCode: {0}\n", desc.ColorCode)); Trace(String.Format("desc.d1: {0}\n", desc.d1)); Trace(String.Format("desc.f1: {0}\n", desc.f1)); Trace(String.Format("desc.i1: {0}\n", desc.i1)); Trace(String.Format("desc.i64: {0}\n", desc.i64)); Trace(String.Format("desc.l1: {0}\n", desc.l1)); Trace(String.Format("desc.MileageEstimate: {0}\n", desc.MileageEstimate)); Trace(String.Format("desc.NumberOfCylinders: {0}\n", desc.NumberOfCylinders)); Trace(String.Format("desc.NumberOfDoors: {0}\n", desc.NumberOfDoors)); Trace(String.Format("desc.s1: {0}\n", desc.s1)); Trace(String.Format("desc.uc1: {0}\n", desc.uc1)); Trace(String.Format("desc.ui1: {0}\n", desc.ui1)); Trace(String.Format("desc.ui64: {0}\n", desc.ui64)); Trace(String.Format("desc.ul1: {0}\n", desc.ul1)); Trace(String.Format("desc.us1: {0}\n", desc.us1)); Trace(String.Format("desc.enumMfgID: {0}\n", desc.enumMfgID)); Trace(String.Format("desc.ZMarker: {0}\n", desc.ZMarker)); desc.NumberOfCylinders = 16; desc.NumberOfDoors = 16; v1.TSetDescriptor(desc); desc.NumberOfCylinders = 32; desc.NumberOfDoors = 32; v1.TSetDescriptorRef(desc); desc.NumberOfCylinders = 64; desc.NumberOfDoors = 64; v1.TSetDescriptorConstRef(desc); // Silly prove-you-can-do-it tests and improve coverage, too: // FuelLevelChanged evt = new FuelLevelChanged(); evt.ReturnMyLong(); evt.ReturnMyNonClassLong(); evt = null; FuelLevelChangedEventArgs eargs = new FuelLevelChangedEventArgs(); eargs.Level = 0.88; eargs.OldLevel = 0.55; eargs = null; Trace("End ManualTestEvent.Main\n"); System.GC.Collect(); }
public virtual void VirtualMain(string[] args) { try { Trace("Begin ManualTestCallback.Main\n"); Vehicle v1 = new Vehicle(); GCHandle gch = GCHandle.Alloc(this); Trace(String.Format("v1: {0:x}\n", (uint) v1.GetCppThis().Handle)); //Trace(String.Format("cb: {0}\n", cb == null ? "(null)" : cb.ToString())); uint i = 0; uint maxi = 1999005;//v1.GetMaxIndex(); Trace("Set/GetValue loop...\n"); //v1.SetCallback(cb, gch); for (i= 0; i<maxi; ++i) { v1.TSetValue(i, v1.TGetValue(i+1)); if (0 == i) { //v1.SetCallback(null, gch); } } Trace(String.Format(" i: {0}\n", i)); Trace("Set/GetDoubleValue loop...\n"); //v1.SetCallback(cb, gch); for (i = 0; i < maxi; ++i) { v1.TSetDoubleValue(i, v1.TGetDoubleValue(i+1)); if (0 == i) { //v1.SetCallback(null, gch); } } Trace(String.Format(" i: {0}\n", i)); Trace("Set/GetStringValue loop...\n"); //v1.SetCallback(cb, gch); for (i = 0; i < maxi; ++i) { v1.TSetStringValue(i, v1.TGetStringValue(i+1)); if (0 == i) { //v1.SetCallback(null, gch); } } Trace(String.Format(" i: {0}\n", i)); Trace("Set/GetObjectValue loop...\n"); //v1.SetCallback(cb, gch); for (i = 0; i < maxi; ++i) { v1.TSetObjectValue(i, v1.TGetObjectValue(i+1)); if (0 == i) { //v1.SetCallback(null, gch); } } Trace(String.Format(" i: {0}\n", i)); Trace("MethodWithBoolRefArg loop...\n"); for (i = 0; i < 30; ++i) { byte arg = 0; v1.MethodWithBoolRefArg(ref arg); Trace(String.Format(" i: {0} -- arg: \n", i, (arg != 0 ? "true" : "false"))); } Trace(String.Format(" i: {0}\n", i)); gch.Free(); Trace("End ManualTestCallback.Main\n"); } catch(Exception exc) { Trace(exc.ToString()); throw; } }
/// <summary> /// Gets a value indicating whether the detector detects the <paramref name="vehicle" />. /// </summary> /// <param name="vehicle">The vehicle that should be checked.</param> public override bool DetectsVehicle(Vehicle vehicle) => vehicle.Kind == VehicleKind.OverheightVehicle && vehicle.Lane == _lane && vehicle.IsAtPosition(_position);
/// <summary> /// Gets a value indicating whether the detector detects the <paramref name="vehicle" />. /// </summary> /// <param name="vehicle">The vehicle that should be checked.</param> public override bool DetectsVehicle(Vehicle vehicle) => vehicle.Kind != VehicleKind.PassengerCar && vehicle.Lane == _lane && vehicle.IsAtPosition(_position);
public static void Main(string[] args) { try { System.Diagnostics.Debug.Write("CTEST_FULL_OUTPUT (Avoid ctest truncation of output)\n"); Console.Error.Write("CTEST_FULL_OUTPUT (Avoid ctest truncation of output)\n"); using (AbstractVehicle v1 = new Vehicle()) { v1.Registered = true; v1.TSetHasLicensePlate(true); PrintAbstractVehicle("Vehicle", v1); } using (AbstractVehicle v2 = new Mustang()) { v2.Registered = false; v2.TSetHasLicensePlate(false); PrintAbstractVehicle("Mustang", v2); // For coverage of the "main-like" methods in Mustang.cxx: // Mustang m2 = v2 as Mustang; if (m2 != null) { m2.VirtualMainPlus(333.333, args, 333); m2.NonVirtualMain(args); } Mustang.main(args); } using (AbstractVehicle v3 = new GenericMotorCycle()) { v3.VIN = "C# VIN"; PrintAbstractVehicle("GenericMotorCycle", v3); } using (AbstractVehicle v4 = new GenericSUV()) { PrintAbstractVehicle("GenericSUV", v4); // Add some additional coverage by calling these methods // that are not already called elsewhere: // int discard = v4.TGet_BTX_ETX_Int(); if (0 == discard) { Console.Error.Write("discard is 0"); } v4.TSetManufacturerID(VehicleDescriptor.ManufacturerID.EtcEtcEtc); v4.TSetCallback(new AbstractVehicle.AVCallback(AvCallbackTestCallback), System.IntPtr.Zero); } } catch(Exception exc) { string s = exc.ToString(); System.Diagnostics.Debug.Write(s); Console.Error.Write(s); throw; } }