public void PrintAlternativeSerialization() { var printer = ObjectPrinter.For <Person>().Printing <double>().Using(d => "DOUBLE"); var serializedData = printer.PrintToString(person); Assert.True(serializedData.Contains("DOUBLE")); }
public string Using_ShouldSerializePropertyWithGivenCulture_WhenCultureIsGiven(string culture) { var printer = ObjectPrinter.For <Person>() .Printing <double>().Using(CultureInfo.GetCultureInfo(culture)); return(printer.PrintToString(person)); }
public void TrimmedToLength_ShouldThrowArgumentException_WhenMaxLenIsNegative() { Action act = () => ObjectPrinter.For <Person>() .Printing(p => p.Name).TrimmedToLength(-1); act.Should().Throw <ArgumentException>(); }
public void Using_ShouldSerializeSelectedTypeProperties_WithAlternativeMethod() { var printer = ObjectPrinter.For <Person>() .Printing <int>().Using(i => i.ToString("X")); printer.PrintToString(person).Should().NotContain("30").And.Contain("1E"); }
public void PrintFields() { ObjectPrinter.For <ThereIs>() .PrintToString(new ThereIs()) .Should() .BeEquivalentTo($"ThereIs{_newLine}\tACow = at the forest{_newLine}"); }
public void Demo() { var person = new Person { Name = "Alexander", Age = 19, Height = 175.5 }; var printer = ObjectPrinter.For <Person>() .ExcludingType <Guid>() //1. Исключить из сериализации свойства определенного типа .Printing <int>().Using(i => (i + 1).ToString()) //2. Указать альтернативный способ сериализации для определенного типа .Printing <double>().Using(CultureInfo.InstalledUICulture) //3. Для числовых типов указать культуру .Printing(o => o.Name).Using(p => p + " I") //4. Настроить сериализацию конкретного свойства .Printing <string>().TrimmedToLength(4) //5. Настроить обрезание строковых свойств (метод должен быть виден только для строковых свойств) .ExcludingProperty(o => o.Age); //6. Исключить из сериализации конкретного свойства var s1 = printer.PrintToString(person); TestContext.WriteLine(s1); //7. Синтаксический сахар в виде метода расширения, сериализующего по-умолчанию var s2 = person.PrintToString(); TestContext.WriteLine($"{Environment.NewLine}{s2}"); //8. ...с конфигурированием var s3 = person.PrintToString(s => s.ExcludingProperty(o => o.Age)); TestContext.WriteLine($"{Environment.NewLine}{s3}"); }
public void Using_ShouldSerializeSelectedProperty_WithAlternativeMethod() { var printer = ObjectPrinter.For <Person>() .Printing(p => p.Name).Using(x => "Some person name"); printer.PrintToString(person).Should().Contain("Name = Some person name"); }
public void Demo() { var person = new Person(); person.Array = new[] { "a", "b", "c" }; person.Blabla = "blabla"; person.Dictionary = new Dictionary <int, int>(); person.Dictionary.Add(1, 1); person.Dictionary.Add(2, 2); person.Dictionary.Add(3, 3); person.Money = 0.0; person.InnerPerson = new Person(); person.Age = 19; person.Height = 222; person.List = new List <int>() { 1, 2, 3 }; person.Name = "name"; var printer = ObjectPrinter.For <Person>() //.Excluding<string>(); .Printing <int>().Using(i => i + "Ы") .Printing(x => x.Name).Using(y => y + "@@@"); string s1 = printer.PrintToString(person); Console.WriteLine(s1); }
public void Demo() { var person = new Person { Name = "Alex", Age = 19 }; var printer = ObjectPrinter.For <Person>() //1. Исключить из сериализации свойства определенного типа .ExcludeType <int>() //2. Указать альтернативный способ сериализации для определенного типа .Printing <int>() .Using(p => p.ToString()) //3. Для числовых типов указать культуру .Printing <double>() .Using(CultureInfo.CurrentCulture) //4. Настроить сериализацию конкретного свойства .SerializingProperty(p1 => p1.Age, age => age.ToString()) //5. Настроить обрезание строковых свойств (метод должен быть виден только для строковых свойств) .Clip(p2 => p2.Name, 0, 2) //6. Исключить из сериализации конкретного свойства .ExcludeProperty(p3 => p3.Height); string s1 = printer.PrintToString(person); //7. Синтаксический сахар в виде метода расширения, сериализующего по-умолчанию var defaultSerializ = person.GetDefaultSerializ(); //8. ...с конфигурированием var defaultSerializWithConfig = person.GetDefaultSerializ(config => config.ExcludeProperty(p => p.Age)); }
public void Printing_ShouldThrowArgumentException_IfNotMemberExpression() { var printer = ObjectPrinter.For <Person>(); Action action = () => printer.Printing(p => 1 + 2); action.ShouldThrow <ArgumentException>(); }
public void PrintToString_ReturnStringWithoutExcludedTypes_WhenManyTypesExcluded() { var testClass = new TestClassExcluded(); var person = new Person { Name = "Alex", Age = 19 }; testClass.person = person; testClass.TestTextInt = 2; testClass.TestTextString = "text"; var printer = ObjectPrinter.For <TestClassExcluded>() .Excluding <string>() .Excluding <Person>() .Excluding <double>(); string s1 = printer.PrintToString(testClass); Console.WriteLine("|" + s1 + "|"); s1.Should().BeEquivalentTo("TestClassExcluded" + Environment.NewLine + "\t" + " TestTextInt = 2" + Environment.NewLine); }
public void Demo() { var person = new Person { Name = "Alex", Age = 19 }; var configuration = ObjectPrinter.For <Person>(); //1. Исключить из сериализации свойства определенного типа configuration.Excluding <Guid>(); //2. Указать альтернативный способ сериализации для определенного типа configuration.For <string>().WithSerialization(p => p.ToString() + "changed"); configuration.For <int>().WithSerialization(x => (x + 1).ToString("0.##") + "Changed").For <int>().WithCulture(CultureInfo.InvariantCulture); //3. Для числовых типов указать культуру configuration.For <int>().WithCulture(CultureInfo.CurrentCulture); //4. Настроить сериализацию конкретного свойства configuration.For(p => p.Age).WithSerialization(p => p.ToString()); //5. Настроить обрезание строковых свойств (метод должен быть виден только для строковых свойств) configuration.For(p => p.Name).Trim(4); // printer.For(p => p.Age).Trim(4); //6. Исключить из сериализации конкретного свойства configuration.Excluding(p => p.Name); configuration.For(p => p.Age).WithSerialization(p => p.ToString()); //7. Синтаксический сахар в виде метода расширения, сериализующего по-умолчанию person.PrintToString(); //8. ...с конфигурированием person.PrintToString(settings => settings.For <string>().WithSerialization(p => p.ToString() + "changed")); ObjectPrinter.PrintToString(person, configuration); }
public void SetUp() { testPerson = new Person { Name = "Phil", Age = 22, Height = 190 }; printer = ObjectPrinter.For <Person>(); }
public void PrintWithSerializingProperty() { var printer = ObjectPrinter.For <Person>().SerializingProperty(p => p.Name, name => "I'm super developer"); var serializedData = printer.PrintToString(person); Assert.True(serializedData.Contains("I'm super developer")); }
public void Demo() { var person = new Person {Name = "Alex", Age = 19}; var printer = ObjectPrinter.For<Person>() //1. Исключить из сериализации свойства определенного типа .Excluding<Guid>() //2. Указать альтернативный способ сериализации для определенного типа .AlternativeFor<int>().Using((p) => p.ToString()) //3. Для числовых типов указать культуру .AlternativeFor<double>().Using(CultureInfo.CurrentCulture) //4. Настроить сериализацию конкретного свойства .AlternativeFor(p => p.Name).Using(p => p.ToString()) //5. Настроить обрезание строковых свойств (метод должен быть виден только для строковых свойств) .AlternativeFor(p => p.Name).TakeOnly(20) //6. Исключить из сериализации конкретного свойства .Excluding(p => p.Name); string s1 = printer.PrintToString(person); //7. Синтаксический сахар в виде метода расширения, сериализующего по-умолчанию string s2 = person.PrintToString(); //8. ...с конфигурированием string s3 = person.PrintToString(s => s.Excluding(p => p.Age)); Console.WriteLine(s1); Console.WriteLine(s2); Console.WriteLine(s3); }
public void Demo() { var person = new Person { Name = "Alex", Age = 19 }; var printer = ObjectPrinter.For <Person>() //1. Исключить из сериализации свойства определенного типа .Excluding <string>() //2. Указать альтернативный способ сериализации для определенного типа .Printing <int>().Using(number => number + ",00") //3. Для числовых типов указать культуру .Printing <double>().Using(CultureInfo.InvariantCulture) //4. Настроить сериализацию конкретного свойства .Printing(p => p.Name).Using(i => i.ToUpper()) //5. Настроить обрезание строковых свойств (метод должен быть виден только для строковых свойств) .Printing(p => p.Name).TrimmedToLength(10); //6. Исключить из сериализации конкретного свойства var excluding = ObjectPrinter.For <Person>().Excluding(p => p.Age); string s1 = printer.PrintToString(person); //7. Синтаксический сахар в виде метода расширения, сериализующего по-умолчанию //8. ...с конфигурированием }
public void Demo() { var person = new Person( 1f, "Alex", 179.9, 19, null); var printer = ObjectPrinter.For <Person>() //1. Исключить из сериализации свойства определенного типа .Excluding <float>() //2. Указать альтернативный способ сериализации для определенного типа .Printing <int>().Using(i => i.ToString("X")) //3. Для числовых типов указать культуру .Printing <double>().Using(CultureInfo.InvariantCulture) //4. Настроить сериализацию конкретного свойства //5. Настроить обрезание строковых свойств (метод должен быть виден только для строковых свойств) .Printing(p => p.Name).TrimmedToLength(10) //6. Исключить из сериализации конкретного свойства .Excluding(p => p.Friends); var s1 = printer.PrintToString(person); s1.Should().Be("Person\n\tName = Alex\r\n\tHeight = 179.9\r\n\tAge = 13\r\n"); //7. Синтаксический сахар в виде метода расширения, сериализующего по-умолчанию var s2 = person.PrintToString(); s2.Should().Be("Person\n\tId = 1\r\n\tName = Alex\r\n\tHeight = 179,9" + "\r\n\tAge = 19\r\n\tFriends = null\r\n"); //8. ...с конфигурированием var s3 = person.PrintToString(s => s.Excluding(p => p.Age)); s3.Should().Be("Person\n\tId = 1\r\n\tName = Alex\r\n\tHeight = 179,9" + "\r\n\tFriends = null\r\n"); }
public void Demo() { var person = new Person { Name = "Alex", Age = 19 }; var printer = ObjectPrinter.For <Person>() //1. Исключить из сериализации свойства определенного типа .Excluding <double>() //2. Указать альтернативный способ сериализации для определенного типа .Printing <int>().Using(x => x.ToString()) //3. Для числовых типов указать культуру .Printing <int>().Using(CultureInfo.CurrentCulture) //.Printing<string>().Using(CultureInfo.CurrentCulture); //нельзя //4. Настроить сериализацию конкретного свойства .Printing(p => p.Age).Using(age => age.ToString()) //5. Настроить обрезание строковых свойств (метод должен быть виден только для строковых свойств) .Printing <string>().Trim(10) //6. Исключить из сериализации конкретного свойства .Excluding(p => p.Id); var s1 = printer.PrintToString(person); //7. Синтаксический сахар в виде метода расширения, сериализующего по-умолчанию var s2 = person.PrintToString(); //8. ...с конфигурированием var s3 = person.PrintToString(config => config.Excluding(p => p.Id)); Console.WriteLine(s1); Console.WriteLine(s2); Console.WriteLine(s3); }
public void PrintToString_ObjectExtensionTesting2() { var result = ObjectPrinter.For <Person>() .Excluding <Guid>() .Printing <string>() .Using(x => x.ToUpper()) .Printing <double>() .Using(CultureInfo.InvariantCulture) .Printing(x => x.Name) .Using(x => x + "asdasd") .Printing(x => x.Name) .TrimmedToLength(3) .PrintToString(person); var extensionResult = person.PrintToString(conf => conf .Excluding <Guid>() .Printing <string>() .Using(x => x.ToUpper()) .Printing <double>() .Using(CultureInfo.InvariantCulture) .Printing(x => x.Name) .Using(x => x + "asdasd") .Printing(x => x.Name) .TrimmedToLength(3)); extensionResult.Should().Be(result); }
public void PrintToString_WorksCorrectly_WithCombinationOfMethods1() { var father = new Person { Name = "D", Age = 22, Id = Guid.Empty, Height = 100.5 }; var person = new Person { Name = "N", Age = 33, Id = Guid.Empty, Height = 1.5, Parent = father }; var printer = ObjectPrinter.For <Person>() .Excluding <Guid>() .Printing <double>().Using(new CultureInfo("en-US")) .Printing <int>().Using(i => i + " y") .Printing <string>().Using(i => i + " No-no"); var result = printer.PrintToString(person); result.Should().Be(String.Format( "Person{0}" + "\tName = N No-no{0}" + "\tHeight = 1.5{0}" + "\tAge = 33 y{0}" + "\tParent = Person{0}" + "\t\tName = D No-no{0}" + "\t\tHeight = 100.5{0}" + "\t\tAge = 22 y{0}" + "\t\tParent = null{0}", Environment.NewLine)); }
public void Using_ShouldSerializeNumericPropertiesWithSelectedCulture(string culture, string expected) { var printer = ObjectPrinter.For <Person>() .Printing <double>().Using(CultureInfo.GetCultureInfo(culture)); printer.PrintToString(person).Should().Contain(expected); }
public void PrintToString_WorksCorrectly_WithNestedObject() { var printer = ObjectPrinter.For <Person>(); var result = printer.PrintToString(_person); result.Should().Be(_result); }
public void Trim_ShouldReturnProperty_WithTrimmedLength() { var printer = ObjectPrinter.For <Person>() .Printing(p => p.Name).Trim(4); printer.PrintToString(person).Should().Contain("Jame").And.NotContain("James"); }
public void PrintToString_ShouldCorrectWriteProperty_WhenTrimmed() { var printer = ObjectPrinter.For <Person>() .Printing(p => p.Job).Trimmed(3); printer.PrintToString(firstPerson).Should().Contain("Job = Dev" + Environment.NewLine); }
public void Demo() { var person = new Person { Name = "Alex", Age = 19, Height = 55.5 }; var printer = ObjectPrinter.For <Person>() //1. Исключить из сериализации свойства определенного типа .Excluding <Guid>() //2. Указать альтернативный способ сериализации для определенного типа .Printing <int>().Using(i => "X") //3. Для числовых типов указать культуру .Printing <double>().Using(new CultureInfo(42)) //4. Настроить сериализацию конкретного свойства //5. Настроить обрезание строковых свойств (метод должен быть виден только для строковых свойств) .Printing(p => p.Name).TrimmedToLength(10) //6. Исключить из сериализации конкретного свойства .Excluding(p => p.Name); string s1 = printer.PrintToString(person); //7. Синтаксический сахар в виде метода расширения, сериализующего по-умолчанию string s2 = person.PrintToString(); //8. ...с конфигурированием string s3 = person.PrintToString(s => s.Excluding(p => p.Height).Printing <int>().Using(i => "qwe")); Console.WriteLine(s1); Console.WriteLine(s2); Console.WriteLine(s3); }
public void Demo() { var printer = ObjectPrinter.For <Person>() //1. Исключить из сериализации свойства определенного типа .Exclude <Guid>() //2. Указать альтернативный способ сериализации для определенного типа .Printing <double>().Using(number => $"double {number.ToString()}") //3. Для числовых типов указать культуру .Printing <int>().Using(CultureInfo.InvariantCulture) //4. Настроить сериализацию конкретного свойства .Printing(p => p.Height).Using(number => $"{number} m") //5. Настроить обрезание строковых свойств (метод должен быть виден только для строковых свойств) .Printing(p => p.Name).Trimmed(4) //6. Исключить из сериализации конкретного свойства .Exclude(p => p.Age); string s1 = printer.PrintToString(firstPerson); //7. Синтаксический сахар в виде метода расширения, сериализующего по-умолчанию string s2 = firstPerson.PrintToString(); //8. ...с конфигурированием string s3 = firstPerson.PrintToString(p => p.Exclude <Guid>()); Console.WriteLine(s1); Console.WriteLine(s2); Console.WriteLine(s3); }
public string TrimmedToLength_ShouldReturnTrimmedStringProperty(int maxLen) { var printer = ObjectPrinter.For <Person>() .Printing(p => p.Name).TrimmedToLength(maxLen); return(printer.PrintToString(person)); }
public void PrintToString_ShouldNotContainProperty_WhenTypeExcluded() { var printer = ObjectPrinter.For <Person>().Exclude <double>(); printer.PrintToString(firstPerson).Should().NotContain("Height = "); printer.PrintToString(firstPerson).Should().NotContain("Weight = "); }
public void AcceptanceTest() { var person = new Person { Name = "Alex", Age = 19 }; var printer = ObjectPrinter.For <Person>(); //1. Исключить из сериализации свойства определенного типа var serialization = printer.Excluding <Guid>(). //2. Указать альтернативный способ сериализации для определенного типа For <string>().WithSerialization(p => p.ToString() + " string changed"). //3. Для числовых типов указать культуру For <double>().WithCulture(CultureInfo.CurrentCulture). //4. Настроить сериализацию конкретного свойства For(p => p.Age).WithSerialization(p => p.ToString()). //5. Настроить обрезание строковых свойств (метод должен быть виден только для строковых свойств) For(p => p.Name).Trim(4). //6. Исключить из сериализации конкретного свойства Excluding(p => p.Name).For(p => p.Age).WithSerialization(p => p.ToString() + " name changed") .PrintToString(); //7. Синтаксический сахар в виде метода расширения, сериализующего по-умолчанию printer.PrintToString(person); person.PrintToString(); //8. ...с конфигурированием person.PrintToString(settings => settings.For <string>().WithSerialization(p => p.ToString() + "changed")); Assert.Pass(); }
public void ExcludeProperty() { var printer = ObjectPrinter.For <Person>().ExcludeProperty(p => p.Height); var serializedData = printer.PrintToString(person); Assert.False(serializedData.Contains("Height")); }