Esempio n. 1
0
        /// <summary>
        /// Internal constructor for Chronometer. Initializes a new instance of Chronometer with the given options.
        /// </summary>
        /// <param name="options"><see cref="ChronometerOptions"/></param>
        /// <param name="normalizedMeanCalculator">Implementation of <see cref="INormalizedMeanCalculator"/></param>
        /// <param name="timerFactory">Implementation of <see cref="ITimerFactory"/></param>
        /// <param name="memoryOptimizer">Implementation of <see cref="IMemoryOptimizer"/></param>
        /// <param name="performanceOptimizer">Implementation of <see cref="IPerformanceOptimizer"/></param>
        /// <param name="debugModeDetector">Implementation of <see cref="IDebugModeDetector"/></param>
        internal Chronometer(
            ChronometerOptions options,
            INormalizedMeanCalculator normalizedMeanCalculator,
            ITimerFactory timerFactory,
            IMemoryOptimizer memoryOptimizer,
            IPerformanceOptimizer performanceOptimizer,
            IDebugModeDetector debugModeDetector)
        {
            if (options == null)
            {
                throw new ArgumentNullException("options");
            }

            if (options.NumberOfInterations == null)
            {
                throw new ArgumentException(Properties.Resources.NumberOfIterationsLessThan1ExceptionMessage, "options");
            }

            if (options.NumberOfInterations.HasValue && options.NumberOfInterations.Value < 1)
            {
                throw new ArgumentException(Properties.Resources.NumberOfIterationsLessThan1ExceptionMessage, "options");
            }

            if (normalizedMeanCalculator == null)
            {
                throw new ArgumentNullException("normalizedMeanCalculator");
            }

            if (timerFactory == null)
            {
                throw new ArgumentNullException("timerFactory");
            }

            if (memoryOptimizer == null)
            {
                throw new ArgumentNullException("memoryOptimizer");
            }

            if (performanceOptimizer == null)
            {
                throw new ArgumentNullException("performanceOptimizer");
            }

            if (debugModeDetector == null)
            {
                throw new ArgumentNullException("debugModeDetector");
            }

            Options = options;
            _normalizedMeanCalculator = normalizedMeanCalculator;
            _timerFactory             = timerFactory;
            _memoryOptimizer          = memoryOptimizer;
            _performanceOptimizer     = performanceOptimizer;
            _debugModeDetector        = debugModeDetector;
        }
        public void it_should_throw_ArgumentException_if_NumberOfIterations_options_value_is_less_than_1()
        {
            _options = ChronometerOptionsGenerator.Default().WithNumberOfIterations(0);

            Assert.Throws<ArgumentException>(
                () =>
                    new Narkhedegs.PerformanceMeasurement.Chronometer(_options, _normalizedMeanCalculatorMock.Object,
                        _timerFactoryMock.Object, _memoryOptimizerMock.Object, _performanceOptimizerMock.Object,
                        _debugModeDetectorMock.Object),
                Narkhedegs.PerformanceMeasurement.Properties.Resources.NumberOfIterationsLessThan1ExceptionMessage);
        }
        public void it_should_assign_the_value_of_options_parameter_to_Options_property_if_options_parameter_is_not_null()
        {
            _options = new ChronometerOptions
            {
                NumberOfInterations = 10
            };

            var chronometer = new Narkhedegs.PerformanceMeasurement.Chronometer(_options,
                _normalizedMeanCalculatorMock.Object, _timerFactoryMock.Object, _memoryOptimizerMock.Object,
                _performanceOptimizerMock.Object, _debugModeDetectorMock.Object);

            Assert.AreEqual(chronometer.Options, _options);
        }
Esempio n. 4
0
        /// <summary>
        /// Instantiates and returns correct timer based on the <see cref="ChronometerOptions"/>. If value of 
        /// ChronometerOptions.MeasureUsingProcessorTime is true then returns <see cref="ProcessorTimer"/> otherwise 
        /// returns <see cref="StopwatchTimer"/>.
        /// </summary>
        /// <param name="options"><see cref="ChronometerOptions"/></param>
        /// <returns>Implementation of <see cref="ITimer"/></returns>
        /// <exception cref="ArgumentNullException">Throws ArgumentNullException if options parameter is null.</exception>
        public ITimer Create(ChronometerOptions options)
        {
            if(options == null)
                throw new ArgumentNullException("options");

            ITimer timer;

            if (options.MeasureUsingProcessorTime)
            {
                timer = new ProcessorTimer();
            }
            else
            {
                timer = new StopwatchTimer();
            }

            return timer;
        }
Esempio n. 5
0
        /// <summary>
        /// Instantiates and returns correct timer based on the <see cref="ChronometerOptions"/>. If value of
        /// ChronometerOptions.MeasureUsingProcessorTime is true then returns <see cref="ProcessorTimer"/> otherwise
        /// returns <see cref="StopwatchTimer"/>.
        /// </summary>
        /// <param name="options"><see cref="ChronometerOptions"/></param>
        /// <returns>Implementation of <see cref="ITimer"/></returns>
        /// <exception cref="ArgumentNullException">Throws ArgumentNullException if options parameter is null.</exception>
        public ITimer Create(ChronometerOptions options)
        {
            if (options == null)
            {
                throw new ArgumentNullException("options");
            }

            ITimer timer;

            if (options.MeasureUsingProcessorTime)
            {
                timer = new ProcessorTimer();
            }
            else
            {
                timer = new StopwatchTimer();
            }

            return(timer);
        }
Esempio n. 6
0
        /// <summary>
        /// Internal constructor for Chronometer. Initializes a new instance of Chronometer with the given options.
        /// </summary>
        /// <param name="options"><see cref="ChronometerOptions"/></param>
        /// <param name="normalizedMeanCalculator">Implementation of <see cref="INormalizedMeanCalculator"/></param>
        /// <param name="timerFactory">Implementation of <see cref="ITimerFactory"/></param>
        /// <param name="memoryOptimizer">Implementation of <see cref="IMemoryOptimizer"/></param>
        /// <param name="performanceOptimizer">Implementation of <see cref="IPerformanceOptimizer"/></param>
        /// <param name="debugModeDetector">Implementation of <see cref="IDebugModeDetector"/></param>
        internal Chronometer(
            ChronometerOptions options, 
            INormalizedMeanCalculator normalizedMeanCalculator,
            ITimerFactory timerFactory,
            IMemoryOptimizer memoryOptimizer,
            IPerformanceOptimizer performanceOptimizer,
            IDebugModeDetector debugModeDetector)
        {
            if(options == null)
                throw new ArgumentNullException("options");

            if(options.NumberOfInterations == null)
                throw new ArgumentException(Properties.Resources.NumberOfIterationsLessThan1ExceptionMessage, "options");

            if(options.NumberOfInterations.HasValue && options.NumberOfInterations.Value < 1)
                throw new ArgumentException(Properties.Resources.NumberOfIterationsLessThan1ExceptionMessage, "options");

            if(normalizedMeanCalculator == null)
                throw new ArgumentNullException("normalizedMeanCalculator");

            if(timerFactory == null)
                throw new ArgumentNullException("timerFactory");

            if (memoryOptimizer == null)
                throw new ArgumentNullException("memoryOptimizer");

            if (performanceOptimizer == null)
                throw new ArgumentNullException("performanceOptimizer");

            if (debugModeDetector == null)
                throw new ArgumentNullException("debugModeDetector");

            Options = options;
            _normalizedMeanCalculator = normalizedMeanCalculator;
            _timerFactory = timerFactory;
            _memoryOptimizer = memoryOptimizer;
            _performanceOptimizer = performanceOptimizer;
            _debugModeDetector = debugModeDetector;
        }
        public void it_should_assign_a_default_value_of_1_to_NumberOfInterations_property()
        {
            var options = new ChronometerOptions();

            Assert.AreEqual(1, options.NumberOfInterations);
        }
        public void it_should_throw_ArgumentNullException_if_options_parameter_is_null()
        {
            _options = null;

            Assert.Throws<ArgumentNullException>(
                () =>
                    new Narkhedegs.PerformanceMeasurement.Chronometer(_options, _normalizedMeanCalculatorMock.Object,
                        _timerFactoryMock.Object, _memoryOptimizerMock.Object, _performanceOptimizerMock.Object,
                        _debugModeDetectorMock.Object));
        }
 public void SetUp()
 {
     _options = ChronometerOptionsGenerator.Default();
     _normalizedMeanCalculatorMock = new Mock<INormalizedMeanCalculator>();
     _timerFactoryMock = new Mock<ITimerFactory>();
     _memoryOptimizerMock = new Mock<IMemoryOptimizer>();
     _performanceOptimizerMock = new Mock<IPerformanceOptimizer>();
     _debugModeDetectorMock = new Mock<IDebugModeDetector>();
 }
Esempio n. 10
0
 /// <summary>
 /// Initializes a new instance of Chronometer with the given options.
 /// </summary>
 /// <param name="options"><see cref="ChronometerOptions"/></param>
 public Chronometer(ChronometerOptions options)
     : this(options, new NormalizedMeanCalculator(), new TimerFactory(), new MemoryOptimizer(),
         new PerformanceOptimizer(), new DebugModeDetector())
 {
 }
Esempio n. 11
0
 /// <summary>
 /// Initializes a new instance of Chronometer with the given options.
 /// </summary>
 /// <param name="options"><see cref="ChronometerOptions"/></param>
 public Chronometer(ChronometerOptions options)
     : this(
         options, new NormalizedMeanCalculator(), new TimerFactory(), new MemoryOptimizer(),
         new PerformanceOptimizer(), new DebugModeDetector())
 {
 }