public void ShouldCreateTest()
		{
			SharedStaticContextualStorageStrategy sharedStaticContextualStorageStrategy;
			const string KEY = "somekey";
			bool result;
			string value;
			string expected;

			sharedStaticContextualStorageStrategy = new SharedStaticContextualStorageStrategy();
			sharedStaticContextualStorageStrategy.ResetValues();

			// has unset
			result = sharedStaticContextualStorageStrategy.HasValue(KEY);
			Assert.IsFalse(result);

			// get unset
			value = sharedStaticContextualStorageStrategy.GetValue<string>(KEY);
			Assert.IsNull(value);

			// remove unset
			sharedStaticContextualStorageStrategy.RemoveValue(KEY);

			// set unset
			expected = Guid.NewGuid().ToString("N");
			sharedStaticContextualStorageStrategy.SetValue(KEY, expected);

			// has isset
			result = sharedStaticContextualStorageStrategy.HasValue(KEY);
			Assert.IsTrue(result);

			// get isset
			value = sharedStaticContextualStorageStrategy.GetValue<string>(KEY);
			Assert.IsNotNull(value);
			Assert.AreEqual(expected, value);

			// set isset
			expected = Guid.NewGuid().ToString("N");
			sharedStaticContextualStorageStrategy.SetValue(KEY, expected);

			result = sharedStaticContextualStorageStrategy.HasValue(KEY);
			Assert.IsTrue(result);

			value = sharedStaticContextualStorageStrategy.GetValue<string>(KEY);
			Assert.IsNotNull(value);
			Assert.AreEqual(expected, value);

			// remove isset
			sharedStaticContextualStorageStrategy.RemoveValue(KEY);

			// verify remove
			result = sharedStaticContextualStorageStrategy.HasValue(KEY);
			Assert.IsFalse(result);

			value = sharedStaticContextualStorageStrategy.GetValue<string>(KEY);
			Assert.IsNull(value);
		}
		public void ShouldCreateCrossThreadTest()
		{
			SharedStaticContextualStorageStrategy sharedStaticContextualStorageStrategy;
			const string KEY = "somekey";
			bool result;
			string value;
			string expected;

			Thread thread;
			int managedThreadId;

			managedThreadId = Thread.CurrentThread.ManagedThreadId;
			sharedStaticContextualStorageStrategy = new SharedStaticContextualStorageStrategy();
			sharedStaticContextualStorageStrategy.ResetValues();

			// set unset
			expected = Guid.NewGuid().ToString("N");
			sharedStaticContextualStorageStrategy.SetValue(KEY, expected);

			// has isset
			result = sharedStaticContextualStorageStrategy.HasValue(KEY);
			Assert.IsTrue(result);

			// get isset
			value = sharedStaticContextualStorageStrategy.GetValue<string>(KEY);
			Assert.IsNotNull(value);
			Assert.AreEqual(expected, value);

			thread = new Thread(() =>
								{
									int _managedThreadId = Thread.CurrentThread.ManagedThreadId;

									Assert.AreNotEqual(_managedThreadId, managedThreadId);

									// has isset(other thread)
									result = sharedStaticContextualStorageStrategy.HasValue(KEY);
									Assert.IsTrue(result);
								});

			thread.Start();
			thread.Join();
		}
		public void ShouldFailOnNullSharedStaticCreateTest()
		{
			IDictionary<string, object> mockSharedStatic;
			SharedStaticContextualStorageStrategy sharedStaticContextualStorageStrategy;

			mockSharedStatic = null;

			sharedStaticContextualStorageStrategy = new SharedStaticContextualStorageStrategy(mockSharedStatic);
		}