Basic Asserts on strings.
예제 #1
0
        public virtual void Formatter_iterates_IEnumerable_property_when_its_actual_type_is_an_array_of_objects()
        {
            Formatter <Node> .RegisterForMembers();

            var node = new Node
            {
                Id    = "1",
                Nodes =
                    new[]
                {
                    new Node {
                        Id = "1.1"
                    },
                    new Node {
                        Id = "1.2"
                    },
                    new Node {
                        Id = "1.3"
                    },
                }
            };

            var output = node.ToLogString();

            StringAssert.Contains("1.1", output);
            StringAssert.Contains("1.2", output);
            StringAssert.Contains("1.3", output);
        }
예제 #2
0
        public void KapacitetTestCase3()
        {
            string rezultat3 = sekretarica.povecajKapacitet(55);

            StringAssert.AreEqualIgnoringCase(rezultat3,
                                              "Kapacitet uspješno povećan sa 2 na 57 poruka, a to vas je koštalo =76.725 KM.");
        }
예제 #3
0
        public void Formatter_iterates_IEnumerable_property_when_its_reflected_type_is_array()
        {
            Log.Formatters.RegisterPropertiesFormatter <Node>();

            var node = new Node
            {
                Id         = "1",
                NodesArray =
                    new[]
                {
                    new Node {
                        Id = "1.1"
                    },
                    new Node {
                        Id = "1.2"
                    },
                    new Node {
                        Id = "1.3"
                    },
                }
            };

            var output = node.ToLogString();

            StringAssert.Contains("1.1", output);
            StringAssert.Contains("1.2", output);
            StringAssert.Contains("1.3", output);
        }
예제 #4
0
        public void KapacitetTestCase1()
        {
            string rezultat1 = sekretarica.povecajKapacitet(19);

            StringAssert.AreEqualIgnoringCase(rezultat1,
                                              "Kapacitet uspješno povećan sa 2 na 21 poruka, a to vas je koštalo =29.45 KM.");
        }
예제 #5
0
        public void KapacitetTestCase2()
        {
            string rezultat2 = sekretarica.povecajKapacitet(22);

            StringAssert.AreEqualIgnoringCase(rezultat2,
                                              "Kapacitet uspješno povećan sa 2 na 24 poruka, a to vas je koštalo =32.395 KM.");
        }
예제 #6
0
        public void GenerateSchemaWithStringEnum()
        {
            JSchemaGenerator generator = new JSchemaGenerator();

            generator.GenerationProviders.Add(new StringEnumGenerationProvider
            {
                CamelCaseText = true
            });
            JSchema schema = generator.Generate(typeof(Y));

            string json = schema.ToString();

            StringAssert.AreEqual(@"{
  ""type"": ""object"",
  ""properties"": {
    ""y"": {
      ""type"": ""string"",
      ""enum"": [
        ""no"",
        ""asc"",
        ""desc""
      ]
    }
  },
  ""required"": [
    ""y""
  ]
}", json);
        }
        private static void AssertStringContains(AssertionException result, string expectedMessage, string lambdaDescription)
        {
            StringAssertEx.Contains(lambdaDescription, result.Message);
            var replace = result.Message.Replace(lambdaDescription, "");

            StringAssertEx.Contains(expectedMessage, replace);
        }
예제 #8
0
        public void Generate_Person()
        {
            JSchemaGenerator generator = new JSchemaGenerator();
            JSchema          schema    = generator.Generate(typeof(Person));

            string json = schema.ToString();

            StringAssert.AreEqual(@"{
  ""id"": ""Person"",
  ""title"": ""Title!"",
  ""description"": ""JsonObjectAttribute description!"",
  ""type"": ""object"",
  ""properties"": {
    ""Name"": {
      ""type"": [
        ""string"",
        ""null""
      ]
    },
    ""BirthDate"": {
      ""type"": ""string""
    },
    ""LastModified"": {
      ""type"": ""string""
    }
  },
  ""required"": [
    ""Name"",
    ""BirthDate"",
    ""LastModified""
  ]
}", json);
        }
예제 #9
0
        public void Generate_DefaultValueAttributeTestClass()
        {
            JSchemaGenerator generator = new JSchemaGenerator();
            JSchema          schema    = generator.Generate(typeof(DefaultValueAttributeTestClass));

            string json = schema.ToString();

            Console.WriteLine(json);

            StringAssert.AreEqual(@"{
  ""type"": ""object"",
  ""additionalProperties"": false,
  ""properties"": {
    ""TestField1"": {
      ""type"": ""integer"",
      ""default"": 21
    },
    ""TestProperty1"": {
      ""type"": [
        ""string"",
        ""null""
      ],
      ""default"": ""TestProperty1Value""
    }
  },
  ""required"": [
    ""TestField1"",
    ""TestProperty1""
  ]
}", json);
        }
예제 #10
0
        public void Test_Worker_Pkg()
        {
            var sut = new PackageUpdaterWorker();
            var executablePackage = sut.GetExecutablePackage(new FileInfo(Path.Combine(this.Update11Folder.FullName, "MyPackageBasedApp Update v. 1.1.pkg")));

            StringAssert.EndsWith(@"\PackagedApp\Updates\1.1\MyPackageBasedApp Update v. 1.1.pkg", executablePackage.FullName);
            Assert.IsTrue(executablePackage.Exists);
        }
예제 #11
0
        public void Generate_UserNullable()
        {
            JSchemaGenerator generator = new JSchemaGenerator();
            JSchema          schema    = generator.Generate(typeof(UserNullable));

            string json = schema.ToString();

            StringAssert.AreEqual(@"{
  ""type"": ""object"",
  ""properties"": {
    ""Id"": {
      ""type"": ""string""
    },
    ""FName"": {
      ""type"": [
        ""string"",
        ""null""
      ]
    },
    ""LName"": {
      ""type"": [
        ""string"",
        ""null""
      ]
    },
    ""RoleId"": {
      ""type"": ""integer""
    },
    ""NullableRoleId"": {
      ""type"": [
        ""integer"",
        ""null""
      ]
    },
    ""NullRoleId"": {
      ""type"": [
        ""integer"",
        ""null""
      ]
    },
    ""Active"": {
      ""type"": [
        ""boolean"",
        ""null""
      ]
    }
  },
  ""required"": [
    ""Id"",
    ""FName"",
    ""LName"",
    ""RoleId"",
    ""NullableRoleId"",
    ""NullRoleId"",
    ""Active""
  ]
}", json);
        }
예제 #12
0
        public void Test_Worker_ZippedPkg()
        {
            //package which is donwloaded needs to be extracted, hence the expected executable package is in _Extracted folder
            var sut = new PackageUpdaterWorker();
            var executablePackage = sut.GetExecutablePackage(new FileInfo(Path.Combine(this.Update12Folder.FullName, "1.2", "MyPackageBasedApp Update v. 1.2.zip")));

            Assert.IsTrue(executablePackage.Exists);
            StringAssert.EndsWith(@"\PackagedApp\Updates\1.2\1.2 Extracted\UpdatePackage.pkg", executablePackage.FullName);
        }
        public void AddTeacher_WhenTeacherIsNull_ShouldThrowArgumentNullException()
        {
            var      id          = 100;
            ITeacher nullTeacher = null;

            var ex = Assert.Throws <ArgumentNullException>(() => SchoolSystemEngine.AddTeacher(id, nullTeacher));

            StringAssert.Contains("cannot be null or empty", ex.Message);
        }
        public void AddTeacher_WhenIdIsInvalid_ShouldThrowArgumentOutOfRangeException()
        {
            var invalidID     = -1;
            var mockedTeacher = new Mock <ITeacher>();

            var ex = Assert.Throws <ArgumentOutOfRangeException>(() => SchoolSystemEngine.AddTeacher(invalidID, mockedTeacher.Object));

            StringAssert.Contains("cannot be less than 0!", ex.Message);
        }
        public void AddStudent_WhenStudentIsNull_ShouldThrowArgumentNullException()
        {
            var      id          = 100;
            IStudent nullStudent = null;

            var ex = Assert.Throws <ArgumentNullException>(() => SchoolSystemEngine.AddStudent(id, nullStudent));

            StringAssert.Contains("cannot be null or empty", ex.Message);
        }
예제 #16
0
        public void MixedRequired()
        {
            JSchemaGenerator generator = new JSchemaGenerator();

            generator.UndefinedSchemaIdHandling = JSchemaUndefinedIdHandling.None;

            JSchema schema = generator.Generate(typeof(CircularReferenceWithIdClass));

            string json = schema.ToString();

            StringAssert.AreEqual(@"{
  ""id"": ""MyExplicitId"",
  ""type"": ""object"",
  ""properties"": {
    ""Name"": {
      ""type"": [
        ""string"",
        ""null""
      ]
    },
    ""Child"": {
      ""id"": ""MyExplicitId-1"",
      ""type"": [
        ""object"",
        ""null""
      ],
      ""properties"": {
        ""Name"": {
          ""type"": [
            ""string"",
            ""null""
          ]
        },
        ""Child"": {
          ""$ref"": ""#""
        }
      },
      ""required"": [
        ""Name"",
        ""Child""
      ]
    }
  },
  ""required"": [
    ""Name"",
    ""Child""
  ]
}", json);

            CircularReferenceWithIdClass c = new CircularReferenceWithIdClass();
            JToken t = JToken.Parse(JsonConvert.SerializeObject(c, Formatting.Indented));

            Assert.IsTrue(t.IsValid(schema));
        }
예제 #17
0
        public virtual void Log_WithParams_comment_appears_in_output()
        {
            var writer   = new StringWriter();
            var fortyone = 41;

            using (Log.Events().Subscribe(e => writer.Write(e.ToLogString())))
            {
                Log.WithParams(() => new { fortyone }).Write("a message");
            }

            StringAssert.Contains("a message", writer.ToString());
        }
예제 #18
0
        public void GenerateSchemaCamelCase()
        {
            JSchemaGenerator generator = new JSchemaGenerator();

            generator.SchemaIdGenerationHandling = SchemaIdGenerationHandling.TypeName;
            generator.ContractResolver           = new CamelCasePropertyNamesContractResolver()
            {
#if !(NETFX_CORE || PORTABLE || ASPNETCORE50 || PORTABLE40)
                IgnoreSerializableAttribute = true
#endif
            };

            JSchema schema = generator.Generate(typeof(Version), true);

            string json = schema.ToString();

            StringAssert.AreEqual(@"{
  ""id"": ""Version"",
  ""type"": [
    ""object"",
    ""null""
  ],
  ""additionalProperties"": false,
  ""properties"": {
    ""major"": {
      ""type"": ""integer""
    },
    ""minor"": {
      ""type"": ""integer""
    },
    ""build"": {
      ""type"": ""integer""
    },
    ""revision"": {
      ""type"": ""integer""
    },
    ""majorRevision"": {
      ""type"": ""integer""
    },
    ""minorRevision"": {
      ""type"": ""integer""
    }
  },
  ""required"": [
    ""major"",
    ""minor"",
    ""build"",
    ""revision"",
    ""majorRevision"",
    ""minorRevision""
  ]
}", json);
        }
예제 #19
0
        public void NestedCircularReference()
        {
            JSchemaGenerator generator = new JSchemaGenerator();

            JSchema schema = generator.Generate(typeof(ParentCircularReferenceClass));
            string  json   = schema.ToString();

            JSchema loadedSchema = JSchema.Parse(json);
            JSchema circularReferenceClassSchema = (JSchema)loadedSchema.ExtensionData["definitions"]["CircularReferenceClass"];

            Assert.IsNotNull(circularReferenceClassSchema);
            Assert.AreEqual(circularReferenceClassSchema, circularReferenceClassSchema.Properties["Child"]);

            StringAssert.AreEqual(@"{
  ""definitions"": {
    ""CircularReferenceClass"": {
      ""type"": [
        ""object"",
        ""null""
      ],
      ""properties"": {
        ""Name"": {
          ""type"": ""string""
        },
        ""Child"": {
          ""$ref"": ""#/definitions/CircularReferenceClass""
        }
      },
      ""required"": [
        ""Name""
      ]
    }
  },
  ""type"": ""object"",
  ""properties"": {
    ""Name"": {
      ""type"": [
        ""string"",
        ""null""
      ]
    },
    ""Nested"": {
      ""$ref"": ""#/definitions/CircularReferenceClass""
    }
  },
  ""required"": [
    ""Name"",
    ""Nested""
  ]
}", json);
        }
        public void Success_and_failure_messages_can_be_configured_separately()
        {
            var plan = new ValidationPlan <string>
            {
                Validate.That <string>(s => s.As("value").Length.As("length") > 3.As("min"))
                .WithErrorMessage("Fail! Your string {value} is only {length} characters.")
                .WithSuccessMessage("Win! '{value}' is more than {min} characters.")
            };

            var failure = plan.Execute("hi").Evaluations.Single();
            var success = plan.Execute("hello").Evaluations.Single();

            StringAssert.Contains("Fail!", failure.Message);
            StringAssert.Contains("Win!", success.Message);
        }
예제 #21
0
        public virtual void Log_WithParams_automatically_generates_custom_formatter_for_reference_type()
        {
            var writer = new StringWriter();

            Log.Formatters.RegisterPropertiesFormatter <FileInfo>();
            const int anInt    = 23;
            var       fileInfo = new FileInfo(@"c:\temp\testfile.txt");

            using (Log.Events().Subscribe(e => writer.Write(e.ToLogString())))
                using (TestHelper.LogToConsole())
                {
                    Log.WithParams(() => new { anInt, fileInfo }).Write("a message");
                }

            StringAssert.Contains(@"Directory = c:\temp", writer.ToString());
        }
예제 #22
0
        public void Parameter_logging_can_be_disabled_per_class()
        {
            var log = new StringWriter();

            Extension <Boundaries> .DisableFor <InheritedWidget>();

            using (Log.Events().Subscribe(e => log.Write(e.ToLogString())))
            {
                var w  = new Widget();
                var iw = new InheritedWidget();
                w.DoStuff("should be in log");
                iw.DoStuff("should not be in log");
            }

            StringAssert.Contains("should be in log", log.ToString());
            StringAssert.DoesNotContain("should not be in log", log.ToString());
        }
예제 #23
0
        public virtual void Log_WithParams_automatically_generates_custom_formatter_for_array()
        {
            var writer = new StringWriter();
            var myInts = new[] { 2222, 3333, 4444 };

            using (Log.Events().Subscribe(e => writer.Write(e.ToLogString())))
            {
                Log.WithParams(() => new { myInts }).Write("a message");
            }

            var output = writer.ToString();

            StringAssert.Contains("2222", output);
            StringAssert.Contains("3333", output);
            StringAssert.Contains("4444", output);
            StringAssert.DoesNotContain(myInts.ToString(), output);
        }
예제 #24
0
        public void CircularReferenceWithMixedRequires_WithId()
        {
            JSchemaGenerator generator = new JSchemaGenerator();

            generator.SchemaIdGenerationHandling = SchemaIdGenerationHandling.TypeName;

            JSchema schema = generator.Generate(typeof(CircularReferenceClass), false);
            string  json   = schema.ToString();

            StringAssert.AreEqual(@"{
  ""id"": ""CircularReferenceClass"",
  ""definitions"": {
    ""CircularReferenceClass-1"": {
      ""id"": ""CircularReferenceClass-1"",
      ""type"": [
        ""object"",
        ""null""
      ],
      ""properties"": {
        ""Name"": {
          ""type"": ""string""
        },
        ""Child"": {
          ""$ref"": ""CircularReferenceClass-1""
        }
      },
      ""required"": [
        ""Name""
      ]
    }
  },
  ""type"": ""object"",
  ""properties"": {
    ""Name"": {
      ""type"": ""string""
    },
    ""Child"": {
      ""$ref"": ""CircularReferenceClass-1""
    }
  },
  ""required"": [
    ""Name""
  ]
}", json);
        }
예제 #25
0
        public void Exception_WithData_two_anonymous_type_objects_are_added_with_two_keys()
        {
            int fortyone = 41;
            var string42 = "42";

            var exception = new Exception();

            exception.WithData(new { fortyone = fortyone }).WithData(new { string42 });

            Assert.That(exception.Data.Count, Is.EqualTo(2));

            var exceptionData = exception.Data["ItsLog_ExceptionData_"].ToString();

            StringAssert.Contains(string.Format("fortyone = {0}", fortyone), exceptionData);

            exceptionData = exception.Data["ItsLog_ExceptionData_2"].ToString();
            StringAssert.Contains(string.Format("string42 = {0}", string42), exceptionData);
        }
예제 #26
0
        public virtual void Log_with_params_can_be_disabled_globally()
        {
            Extension <Params> .Disable();

            var writer = new StringWriter();

            var someGuid = Guid.NewGuid();

            using (Log.Events().Subscribe(e => writer.Write(e.ToLogString())))
            {
                Log.WithParams(() => new { someGuid }).Write("a message");
            }

            var output = writer.ToString();

            StringAssert.DoesNotContain("someGuid", output);
            StringAssert.DoesNotContain(someGuid.ToLogString(), output);
        }
예제 #27
0
        public virtual void Log_WithParams_correctly_outputs_value_types()
        {
            var writer   = new StringWriter();
            var forty    = "40";
            var fortyone = 41;

            using (Log.Events().Subscribe(e => writer.Write(e.ToLogString())))
            {
                Log.WithParams(() => new { forty, fortyone }).Write("a message");
            }

            var output = writer.ToString();

            StringAssert.Contains("forty", output);
            StringAssert.Contains("40", output);
            StringAssert.Contains("fortyone", output);
            Assert.IsTrue(output.Contains("41"));
        }
예제 #28
0
        public void CircularReferenceWithMixedRequires()
        {
            JSchemaGenerator generator = new JSchemaGenerator();

            generator.DefaultRequired = Required.AllowNull;

            JSchema schema = generator.Generate(typeof(CircularReferenceClass), false);
            string  json   = schema.ToString();

            StringAssert.AreEqual(@"{
  ""definitions"": {
    ""CircularReferenceClass"": {
      ""type"": [
        ""object"",
        ""null""
      ],
      ""properties"": {
        ""Name"": {
          ""type"": ""string""
        },
        ""Child"": {
          ""$ref"": ""#/definitions/CircularReferenceClass""
        }
      },
      ""required"": [
        ""Name""
      ]
    }
  },
  ""type"": ""object"",
  ""properties"": {
    ""Name"": {
      ""type"": ""string""
    },
    ""Child"": {
      ""$ref"": ""#/definitions/CircularReferenceClass""
    }
  },
  ""required"": [
    ""Name""
  ]
}", json);
        }
예제 #29
0
        public virtual void LogActivity_trace_outputs_updated_parameter_values()
        {
            var log = "";

            var anInt   = 1;
            var aString = "a";

            using (TestHelper.OnEntryPosted(e => log += e.ToLogString()))
                using (var activity = Log.Enter(() => new { anInt, aString }))
                {
                    StringAssert.Contains("anInt = 1", log);
                    StringAssert.Contains("aString = a", log);

                    anInt   = 2;
                    aString = "b";

                    activity.Trace("here i am");

                    StringAssert.Contains("anInt = 2", log);
                    StringAssert.Contains("aString = b", log);
                }
        }
예제 #30
0
        public void GenerateForNullableInt32()
        {
            JSchemaGenerator generator = new JSchemaGenerator();

            JSchema schema = generator.Generate(typeof(NullableInt32TestClass));
            string  json   = schema.ToString();

            StringAssert.AreEqual(@"{
  ""type"": ""object"",
  ""properties"": {
    ""Value"": {
      ""type"": [
        ""integer"",
        ""null""
      ]
    }
  },
  ""required"": [
    ""Value""
  ]
}", json);
        }