public void DontLogAttributeTest() { var c = new TestDontLogAttribute(); var line = Line(c); var loggedValuesCount = line.Split(defaultConfig.delimiter).Length; var propertyCount = c.GetType().GetProperties().Length; var dontLogCount = c.GetType() .GetProperties() .Where(x => Attribute.IsDefined(x, typeof(DontLogAttribute))) .Count(); Assert.AreEqual(propertyCount - dontLogCount, loggedValuesCount); }
public void DontLogAttributeExcludesLogging() { var t = typeof(TestDontLogAttribute); var header = Header(t); var shouldNotBeLogged = PublicFieldAndProperties(t) .Where(x => Attribute.IsDefined( element: x, attributeType: typeof(DontLogAttribute) ) ); var headerWords = header.Split(defaultConfig.delimiter); foreach (var m in shouldNotBeLogged) { Assert.IsFalse( condition: headerWords.Contains(m.Name), message: $"{headerWords} should not contain {m.Name}" ); if (m.TryConvertToPropertyOrFieldType(out Type nestedType)) { if (!nestedType.CustomIsPrimitive()) { foreach (var mn in PublicFieldAndProperties((m as PropertyInfo).PropertyType)) { Assert.IsFalse( condition: headerWords.Contains(mn.Name), message: $"{headerWords} should not contain {mn.Name}" ); } } } } var ins = new TestDontLogAttribute(); Console.WriteLine(header); }