public void ReadsCorrectly()
        {
            // arrange
            var converter = new BoolConverter();
            var reader1   = new Moq.Mock <JsonReader>();

            reader1.SetupGet(x => x.Value).Returns(null);
            var reader2 = new Moq.Mock <JsonReader>();

            reader2.SetupGet(x => x.Value).Returns("0");
            var reader3 = new Moq.Mock <JsonReader>();

            reader3.SetupGet(x => x.Value).Returns("1");

            // act
            var object1 = converter.ReadJson(reader1.Object, typeof(bool), null, null);
            var object2 = converter.ReadJson(reader1.Object, typeof(bool?), null, null);
            var object3 = converter.ReadJson(reader2.Object, typeof(bool), null, null);
            var object4 = converter.ReadJson(reader3.Object, typeof(bool), null, null);

            // assert
            Assert.IsAssignableFrom <bool>(object1);
            Assert.IsFalse((bool)object1);
            Assert.IsNull(object2);
            Assert.IsFalse((bool)object3);
            Assert.IsTrue((bool)object4);
        }
        public void ReadJson_Should_ReadBooleanValue(string testValue, bool expectedResult)
        {
            var boolConverter = new BoolConverter();

            var jsonReaderMock = MockRepository.Create <JsonReader>();

            jsonReaderMock.Setup(x => x.Value).Returns(testValue);

            var result = boolConverter.ReadJson(
                jsonReaderMock.Object,
                typeof(bool),
                null,
                null);

            jsonReaderMock.VerifyGet(x => x.Value, Times.Once);
            result.ShouldBeType <bool>();
            result.ShouldEqual(expectedResult);
        }