public void IsValid ()
		{
			var attr = new EnumDataTypeAttribute (typeof (string));
			
			try {
				attr.IsValid (null);
				Assert.Fail ("#A1-1");
			} catch (InvalidOperationException) {
				// success
			}

			try {
				attr.IsValid ("stuff");
				Assert.Fail ("#A1-2");
			} catch (InvalidOperationException) {
				// success
			}

			attr = new EnumDataTypeAttribute (typeof (TestEnum));
			Assert.IsTrue (attr.IsValid (null), "#A2-1");
			Assert.IsTrue (attr.IsValid (1), "#A2-2");
			Assert.IsFalse (attr.IsValid (0), "#A2-3");
			Assert.IsTrue (attr.IsValid (TestEnum.Two), "#A2-4");
			Assert.IsFalse (attr.IsValid (AnotherEnum.Five), "#A2-5");
			Assert.IsFalse (attr.IsValid ("stuff"), "#A2-5");

			AnotherEnum val = AnotherEnum.Six;
			Assert.IsFalse (attr.IsValid (val), "#A2-6");

			Assert.IsTrue (attr.IsValid (String.Empty), "#A2-7");
			Assert.IsTrue (attr.IsValid ("Three"), "#A2-8");
			Assert.IsFalse (attr.IsValid ("Four"), "#A2-9");
			Assert.IsFalse (attr.IsValid (true), "#A2-10");
			Assert.IsFalse (attr.IsValid (' '), "#A2-11");
			Assert.IsFalse (attr.IsValid (0.12F), "#A2-12");
			Assert.IsTrue (attr.IsValid ((short) 1), "#A2-13");
			Assert.IsFalse (attr.IsValid (12.3M), "#A2-14");
			Assert.IsFalse (attr.IsValid (12.3D), "#A2-15");
			Assert.IsTrue (attr.IsValid ((long) 1), "#A2-16");

			attr = new EnumDataTypeAttribute (typeof (AnotherEnum));
			Assert.IsTrue (attr.IsValid (null), "#A3-1");
			Assert.IsTrue (attr.IsValid (4), "#A3-2");
			Assert.IsFalse (attr.IsValid (0), "#A3-3");
			Assert.IsTrue (attr.IsValid (AnotherEnum.Five), "#A3-4");
			Assert.IsFalse (attr.IsValid (TestEnum.One), "#A3-5");
			Assert.IsFalse (attr.IsValid ("stuff"), "#A3-5");

			val = AnotherEnum.Four;
			Assert.IsTrue (attr.IsValid (val), "#A3-6");

			Assert.IsTrue (attr.IsValid (String.Empty), "#A3-7");
			Assert.IsTrue (attr.IsValid ("Four"), "#A3-8");
			Assert.IsFalse (attr.IsValid ("Three"), "#A3-9");
			Assert.IsTrue (attr.IsValid (12), "#A3-10");
			Assert.IsTrue (attr.IsValid ("Five, Six"), "#A3-11");
			Assert.IsFalse (attr.IsValid (true), "#A3-12");
			Assert.IsFalse (attr.IsValid (' '), "#A3-13");
			Assert.IsFalse (attr.IsValid (0.12), "#A3-14");
		}