public void ConstructorTest()
        {
            var actual = new FutureJsonSchema("123ABC");

            Assert.False(actual.Resolved);
            Assert.AreEqual("123ABC", actual.Id);
            Assert.IsNull(actual.Maximum);
            Assert.IsNull(actual.Type);
        }
        public void ResolvePassTest()
        {
            var actual = new FutureJsonSchema("123ABC");
            var sucess = new JsonSchema {
                Id = "123ABC", Maximum = 12.5, Minimum = 5.3
            };

            actual.Resolve(sucess);

            Assert.True(actual.Resolved);
            Assert.AreEqual(12.5, actual.Maximum.Value);
            Assert.AreEqual(5.3, actual.Minimum.Value);
        }
        public void TestAddResolveFuture()
        {
            var resolver = new FutureJsonSchemaResolver();

            Assert.AreEqual(0, resolver.LoadedSchemas.Count);

            var futureSchema1 = new FutureJsonSchema("1");
            var schema1       = new JsonSchema {
                Id = "1", Title = "Title For 1"
            };
            var futureSchema2 = new FutureJsonSchema("2");
            var schema2       = new JsonSchema {
                Id = "2", Title = "Title For 2"
            };

            resolver.LoadedSchemas.Add(futureSchema1);
            resolver.LoadedSchemas.Add(futureSchema2);

            Assert.AreEqual(2, resolver.LoadedSchemas.Count);

            resolver.LoadedSchemas.Add(schema2);
            Assert.AreEqual(2, resolver.LoadedSchemas.Count);

            var resolvedFuture2 = resolver.GetSchema("2") as FutureJsonSchema;
            var resolvedFuture1 = resolver.GetSchema("1") as FutureJsonSchema;

            Assert.NotNull(resolvedFuture1);
            Assert.NotNull(resolvedFuture2);
            Assert.AreSame(resolvedFuture1, futureSchema1);
            Assert.AreSame(resolvedFuture2, futureSchema2);
            Assert.IsFalse(resolvedFuture1.Resolved);
            Assert.IsTrue(resolvedFuture2.Resolved);
            Assert.AreEqual("Title For 2", resolvedFuture2.Title);
            Assert.IsNull(resolvedFuture1.Title);

            resolver.LoadedSchemas.Add(schema1);
            Assert.AreEqual(2, resolver.LoadedSchemas.Count);

            resolvedFuture2 = resolver.GetSchema("2") as FutureJsonSchema;
            resolvedFuture1 = resolver.GetSchema("1") as FutureJsonSchema;

            Assert.NotNull(resolvedFuture1);
            Assert.NotNull(resolvedFuture2);
            Assert.AreSame(resolvedFuture1, futureSchema1);
            Assert.AreSame(resolvedFuture2, futureSchema2);
            Assert.IsTrue(resolvedFuture1.Resolved);
            Assert.IsTrue(resolvedFuture2.Resolved);
            Assert.AreEqual("Title For 2", resolvedFuture2.Title);
            Assert.AreEqual("Title For 1", resolvedFuture1.Title);
        }
        public void ResolveFailTest()
        {
            var actual  = new FutureJsonSchema("123ABC");
            var wrongId = new JsonSchema {
                Id = "Go Fish"
            };
            var wrongType = new FutureJsonSchema("123ABC");
            var sucess    = new JsonSchema {
                Id = "123ABC"
            };

            Assert.Throws(typeof(ArgumentException), () => actual.Resolve(wrongId));
            Assert.Throws(typeof(ArgumentException), () => actual.Resolve(wrongType));
            Assert.Throws(typeof(ArgumentNullException), () => actual.Resolve(null));

            actual.Resolve(sucess);

            Assert.Throws(typeof(InvalidOperationException), () => actual.Resolve(sucess));
        }