c# - TestAccelerometer implementation for Window Phone -


problem

my application use accelerometer data via microsoft.devices.sensors.accelerometer class

now wanna write unit or codedui tests, reason need have special test implementation of accelerometer controlling returned data

in theory have 3 options:

  1. create subclass of accelerometer - impossible because accelerometer sealed class
  2. by using reflection replace implementation of accelerometer @ run-time - isn't best option imho
  3. create subclass of sensorbase<accelerometerreading> - option

i have decided go #1 , implement testaccelerometer child of sensorbase<accelerometerreading>

and here have problem:

`error  cs1729  'sensorbase<accelerometerreading>' not contain constructor takes 0 arguments` 

error pretty clear have looked in decompiled code (jetbrains dotpeak tool) , don't found constructors @ all.

questions

how can found proper constructor use in testaccelerometer implementation?

decompiled code

microsoft.devices.sensors.accelerometer

// type: microsoft.devices.sensors.accelerometer // assembly: microsoft.devices.sensors, version=8.0.0.0, culture=neutral, publickeytoken=24eec0d8c86cda1e // mvid: 81ed89aa-6b11-4b39-bafa-38d59cbb1e3b // assembly location: c:\program files (x86)\reference assemblies\microsoft\framework\windowsphone\v8.0\microsoft.devices.sensors.dll  using system;  namespace microsoft.devices.sensors {   /// <summary>   /// provides windows phone applications access device’s accelerometer sensor.   /// </summary>   public sealed class accelerometer : sensorbase<accelerometerreading>   {     /// <summary>     /// gets or sets whether device on application running supports accelerometer sensor.     /// </summary>     ///      /// <returns>     /// true if device on application running supports accelerometer sensor; otherwise, false.     /// </returns>     public static bool issupported { get; internal set; }      /// <summary>     /// gets current state of accelerometer. value member of <see cref="t:microsoft.devices.sensors.sensorstate"/> enumeration.     /// </summary>     ///      /// <returns>     /// type: <see cref="t:microsoft.devices.sensors.sensorstate"/>.     /// </returns>     public sensorstate state { get; private set; }      /// <summary>     /// occurs when new data arrives accelerometer. method deprecated in current release. applications should use <see cref="e:microsoft.devices.sensors.sensorbase`1.currentvaluechanged"/> event of <see cref="t:microsoft.devices.sensors.sensorbase`1"/> class instead.     /// </summary>     [obsolete("use currentvaluechanged")]     public event eventhandler<accelerometerreadingeventargs> readingchanged;      static accelerometer();      /// <summary>     /// releases managed , unmanaged resources used <see cref="t:microsoft.devices.sensors.accelerometer"/>.     /// </summary>     public new void dispose();      /// <summary>     /// starts data acquisition accelerometer.     /// </summary>     public new void start();      /// <summary>     /// stops data acquisition accelerometer.     /// </summary>     public new void stop();   } } 

microsoft.devices.sensors.sensorbase

// type: microsoft.devices.sensors.sensorbase`1 // assembly: microsoft.devices.sensors, version=8.0.0.0, culture=neutral, publickeytoken=24eec0d8c86cda1e // mvid: 81ed89aa-6b11-4b39-bafa-38d59cbb1e3b // assembly location: c:\program files (x86)\reference assemblies\microsoft\framework\windowsphone\v8.0\microsoft.devices.sensors.dll  using system; using system.security;  namespace microsoft.devices.sensors {   /// <summary>   /// base class windows phone sensor classes.   /// </summary>   /// <typeparam name="tsensorreading">the type of reading returned sensor.</typeparam>   public abstract class sensorbase<tsensorreading> : idisposable tsensorreading : isensorreading   {     /// <summary>     /// gets object implements <see cref="t:microsoft.devices.sensors.isensorreading"/> contains current value of sensor. object 1 of following types, depending on sensor being referenced: <see cref="t:microsoft.devices.sensors.accelerometerreading"/>, <see cref="t:microsoft.devices.sensors.compassreading"/>, <see cref="t:microsoft.devices.sensors.gyroscopereading"/>, <see cref="t:microsoft.devices.sensors.motionreading"/>.     /// </summary>     ///      /// <returns>     /// object implements <see cref="t:microsoft.devices.sensors.isensorreading"/> contains current value of sensor.     /// </returns>     public tsensorreading currentvalue { get; }      /// <summary>     /// gets or sets preferred time between <see cref="e:microsoft.devices.sensors.sensorbase`1.currentvaluechanged"/> events.     /// </summary>     ///      /// <returns>     /// type: <see cref="t:system.timespan"/>. preferred time between currentvaluechanged events.     /// </returns>     public timespan timebetweenupdates { get; set; }      /// <summary>     /// gets validity of sensor’s data.     /// </summary>     ///      /// <returns>     /// type: <see cref="t:system.boolean"/>. true if sensor’s data valid; otherwise, false.     /// </returns>     public bool isdatavalid { get; }      /// <summary>     /// occurs when new data arrives sensor.     /// </summary>     public event eventhandler<sensorreadingeventargs<tsensorreading>> currentvaluechanged;      static sensorbase();      internal sensorbase();      /// <summary>     /// allows object try free resources , perform other cleanup operations before object reclaimed garbage collection.     /// </summary>     [securitysafecritical]     ~sensorbase();      /// <summary>     /// releases managed , unmanaged resources used sensor.     /// </summary>     [securitysafecritical]     public void dispose();      /// <summary>     /// starts acquisition of data sensor.     /// </summary>     public virtual void start();      /// <summary>     /// stops acquisition of data sensor.     /// </summary>     public virtual void stop();   } } 

you did find constructor:

internal sensorbase(); 

this constructor prevents sensorbase having default public constructor , class cannot subclassed outside assembly.

testing complicated. redesign app , use wrapper/adapter accelerometer puropse of testing or check if there's possibility of mocking sealed class on windows phone.


Comments

Popular posts from this blog

asp.net mvc - SSO between MVCForum and Umbraco7 -

Python Tkinter keyboard using bind -

ubuntu - Selenium Node Not Connecting to Hub, Not Opening Port -