Esempio n. 1
0
        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"));
        }
Esempio n. 2
0
        public string Using_ShouldSerializePropertyWithGivenCulture_WhenCultureIsGiven(string culture)
        {
            var printer = ObjectPrinter.For <Person>()
                          .Printing <double>().Using(CultureInfo.GetCultureInfo(culture));

            return(printer.PrintToString(person));
        }
Esempio n. 3
0
        public void TrimmedToLength_ShouldThrowArgumentException_WhenMaxLenIsNegative()
        {
            Action act = () => ObjectPrinter.For <Person>()
                         .Printing(p => p.Name).TrimmedToLength(-1);

            act.Should().Throw <ArgumentException>();
        }
Esempio n. 4
0
        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");
        }
Esempio n. 5
0
 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}");
        }
Esempio n. 7
0
        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 {
                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));
        }
Esempio n. 9
0
        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. ...с конфигурированием
        }
Esempio n. 10
0
        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);
        }
Esempio n. 11
0
        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);
        }
Esempio n. 12
0
        public void Printing_ShouldThrowArgumentException_IfNotMemberExpression()
        {
            var    printer = ObjectPrinter.For <Person>();
            Action action  = () => printer.Printing(p => 1 + 2);

            action.ShouldThrow <ArgumentException>();
        }
        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);
        }
Esempio n. 14
0
 public void SetUp()
 {
     testPerson = new Person {
         Name = "Phil", Age = 22, Height = 190
     };
     printer = ObjectPrinter.For <Person>();
 }
Esempio n. 15
0
        public void PrintingConfig_SupportsLoopedReferences()
        {
            var person = GetPerson();
            var result = ObjectPrinter <Person> .Should()
                         .Exclude <Dictionary <string, Person> >()
                         .Exclude <Car>()
                         .Exclude <Person[]>()
                         .Build()
                         .PrintToString(person);

            var expexted = $"Person" +
                           $"{nl}\tName = Alex" +
                           $"{nl}\tChildren = List`1" +
                           $"{nl}\t\tPerson" +
                           $"{nl}\t\t\tName = Tom" +
                           $"{nl}\t\t\tChildren = List`1" +
                           $"{nl}\t\t\tParent = Person (Looped)" +
                           $"{nl}\t\tPerson" +
                           $"{nl}\t\t\tName = Max" +
                           $"{nl}\t\t\tChildren = List`1" +
                           $"{nl}\t\t\tParent = Person (Looped)" +
                           $"{nl}\tParent = null";

            result.Should().Be(expexted);
        }
Esempio n. 16
0
        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 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");
        }
Esempio n. 18
0
        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 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);
        }
Esempio n. 20
0
        public void PrintToString_WorksCorrectly_WithNestedObject()
        {
            var printer = ObjectPrinter.For <Person>();
            var result  = printer.PrintToString(_person);

            result.Should().Be(_result);
        }
Esempio n. 21
0
        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_ShouldCorrectWriteProperty_WhenTrimmed()
        {
            var printer = ObjectPrinter.For <Person>()
                          .Printing(p => p.Job).Trimmed(3);

            printer.PrintToString(firstPerson).Should().Contain("Job = Dev" + Environment.NewLine);
        }
Esempio n. 23
0
        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 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 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 PrintToString_ShouldNotContainProperty_WhenTypeExcluded()
        {
            var printer = ObjectPrinter.For <Person>().Exclude <double>();

            printer.PrintToString(firstPerson).Should().NotContain("Height = ");
            printer.PrintToString(firstPerson).Should().NotContain("Weight = ");
        }
Esempio n. 27
0
        public string TrimmedToLength_ShouldReturnTrimmedStringProperty(int maxLen)
        {
            var printer = ObjectPrinter.For <Person>()
                          .Printing(p => p.Name).TrimmedToLength(maxLen);

            return(printer.PrintToString(person));
        }
        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 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();
        }
Esempio n. 30
0
        public void PrintAlternativeSerialization()
        {
            var printer        = ObjectPrinter.For <Person>().Printing <double>().Using(d => "DOUBLE");
            var serializedData = printer.PrintToString(person);

            Assert.True(serializedData.Contains("DOUBLE"));
        }