public void Test_clear_1()
        {
            var v1 = new Isotope.NullableOrString<int>();
            v1.String = "FOO";
            Assert.IsFalse(v1.HasValue);
            Assert.IsTrue(v1.HasString);
            Assert.IsFalse(v1.IsEmpty);
            Assert.AreEqual("FOO", v1.String);

            v1.Clear();
            Assert.IsFalse(v1.HasValue);
            Assert.IsFalse(v1.HasString);
            Assert.IsTrue(v1.IsEmpty);
        }
        public void Test_defaults()
        {
            var v1 = new Isotope.NullableOrString<int>();
            Assert.IsFalse(v1.HasValue);
            Assert.IsFalse(v1.HasString);
            Assert.IsTrue(v1.IsEmpty);

            Assert.AreEqual("FOO", v1.GetStringOrDefault("FOO"));
            Assert.AreEqual(20, v1.GetValueOrDefault(20));

            v1.Value = 1;
            Assert.AreEqual("FOO", v1.GetStringOrDefault("FOO"));
            Assert.AreEqual(1, v1.GetValueOrDefault(20));

            v1.String = "BAR";
            Assert.AreEqual("BAR", v1.GetStringOrDefault("FOO"));
            Assert.AreEqual(20, v1.GetValueOrDefault(20));

            v1.Clear();
            Assert.AreEqual("FOO", v1.GetStringOrDefault("FOO"));
            Assert.AreEqual(20, v1.GetValueOrDefault(20));
        }