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;
              }
        }
Exemple #5
0
        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");
        }
Exemple #6
0
        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();
        }
Exemple #7
0
        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;
              }
        }