public void MapperContext_Options() { var options = new SnapshotOptions(); var ctx = new MapperContext(null, new Snapshot(), options, 0); Assert.AreSame(ctx.Options, options); }
public void LineParser_Parse() { var options = new SnapshotOptions(); options.AddDirective(line => line.Replace(" ", string.Empty, StringComparison.OrdinalIgnoreCase)); var sn = new StringBuilder() .AppendLine("Line 1") .AppendLine("Line 2") .AppendLine("Line 3"); var savedsnap = SnapshotTokenizer.Tokenize(sn.ToString(), options); sn = new StringBuilder() .AppendLine("Line 1") .AppendLine(" Line 2") .AppendLine(" Line 3"); var newsnap = SnapshotTokenizer.Tokenize(sn.ToString()); var comparer = new SnapshotCompare(); var result = comparer.Compare(newsnap, savedsnap, options); result.Status.Should().Be(SnapshotStatus.SnapshotsDoNotMatch); newsnap = SnapshotTokenizer.Tokenize(sn.ToString(), options); result = comparer.Compare(newsnap, savedsnap, options); result.Status.Should().Be(SnapshotStatus.SnapshotsMatch); }
public void SnapshotOptions_Configure() { var sn = new StringBuilder() .AppendLine("Line 1") .AppendLine("Line 2") .AppendLine("Line 3"); var savedsnap = SnapshotTokenizer.Tokenize(sn.ToString()); var config = new SnapshotOptions(); config.SetComparer((newline, savedline) => newline.Value.Replace(" ", string.Empty, StringComparison.OrdinalIgnoreCase).Equals(savedline.Value.Replace(" ", string.Empty, StringComparison.OrdinalIgnoreCase))); sn = new StringBuilder() .AppendLine("Line 1") .AppendLine(" Line 2") .AppendLine(" Line 3"); var newsnap = SnapshotTokenizer.Tokenize(sn.ToString()); var comparer = new SnapshotCompare(); var result = comparer.Compare(newsnap, savedsnap, config); result.Status.Should().Be(SnapshotStatus.SnapshotsMatch); SnapshotOptions.Setup(o => { }); }
static void Snapshot(SnapshotOptions opts) { var hyperDocument = new HyperDocument(); var uri = new Uri(opts.Url); hyperDocument.Snapshot(uri, opts.Input); }
public void LineParser_MatchSnapshot() { var options = SnapshotOptions.Create(o => { o.AddDirective(line => line.Replace(" ", string.Empty, StringComparison.OrdinalIgnoreCase)); o.UpdateSavedSnapshot(); }); var sn = new StringBuilder() .AppendLine("Line 1") .AppendLine("Line 2") .AppendLine("Line 3") .ToString(); sn.MatchSnapshot(options); sn = new StringBuilder() .AppendLine("Line 1") .AppendLine(" Line 2") .AppendLine(" Line 3") .ToString(); options = SnapshotOptions.Create(o => { o.AddDirective(line => line.Replace(" ", string.Empty, StringComparison.OrdinalIgnoreCase)); }); sn.MatchSnapshot(options); }
public void DefaultSnapshotOptions_Comparer() { SnapshotOptions.Setup(o => { o.SetComparer((newline, savedline) => newline.Value.Replace(" ", string.Empty, StringComparison.OrdinalIgnoreCase).Equals(savedline.Value.Replace(" ", string.Empty, StringComparison.OrdinalIgnoreCase))); }); var options = SnapshotOptions.Create(o => { o.UpdateSavedSnapshot(); }); var sn = new StringBuilder() .AppendLine("Line 1") .AppendLine("Line 2") .AppendLine("Line 3") .ToString(); sn.MatchSnapshot(options); sn = new StringBuilder() .AppendLine("Line 1") .AppendLine(" Line 2") .AppendLine(" Line 3") .ToString(); sn.MatchSnapshot(); // reset SnapshotOptions.Setup(o => { }); }
public void TypeMapper_Options_ObjectMapper_RootObject() { var options = SnapshotOptions.Create(o => { o.AddMapper <CustomData>((ctx, itm) => { //only add Value and Dbl but ignore Id ctx.Map(new { InnerValue = itm.Inner.Value, OuterValue = itm.Value }); }); }); var snapshot = new CustomData { Id = 1, Dbl = 2.2, Value = "value", Inner = new InnerData { Id = 2, Value = "inner" } }.Tokenize(options); var expected = new { OuterValue = "value", InnerValue = "inner" }.Tokenize(); snapshot.ToString().Should().Be(expected.ToString()); }
public MapperContext(ITypeMapper mapper, Snapshot snapshot, SnapshotOptions options, int indentation) { Mapper = mapper; Indentation = indentation; Options = options; Snapshot = snapshot; }
public void SnapshotOptions_Merge_Comparer_Default() { var options = SnapshotOptions.Create(o => { }); options.MergeDefault(); options.Comparer.Should().BeSameAs(SnapshotOptions.Default.Comparer); }
public void Mapper_MockGuid_SnapshotOptions_Tokenize_Nullable() { Guid?guid = Guid.NewGuid(); var options = SnapshotOptions.Create(o => o.MockGuids()); new { Value = guid }.Tokenize(options).ToString().Should().Be("Value: 00000000-0000-0000-0000-000000000000"); }
public void Mapper_MockDateTime_SnapshotOptions_Tokenize_Nullable() { DateTime?date = new DateTime(2000, 1, 1, 1, 1, 1, 1); var options = SnapshotOptions.Create(o => o.MockDateTimes()); new { Value = date }.Tokenize(options).ToString().Should().Be("Value: 0000-00-00T00:00:00.0000"); }
public void SnapshotOptions_Merge_AddTypeMappers() { var options = SnapshotOptions.Create(o => { o.AddMapper <CustomType>((c, i) => { }); }); options.MergeDefault(); options.TypeMappers.Count().Should().Be(1); }
/// <summary> /// map an object to a snapshot /// </summary> /// <typeparam name="T"></typeparam> /// <param name="item"></param> /// <param name="options"></param> /// <returns></returns> public Snapshot Map <T>(T item, SnapshotOptions options) { var snapshot = new Snapshot(); var ctx = new MapperContext(this, snapshot, options, 0); Map(ctx, item); return(snapshot); }
public void TypeMapper_Options_OverrideMapper() { var options = SnapshotOptions.Create(o => { o.AddMapper <InnerData>((ctx, itm) => { // only mapp the id ctx.AddLine("Value", itm.Value); }); o.AddMapper <CustomData>((ctx, itm) => { // overrid to only add Value and Dbl but ignore Id o.AddMapper <InnerData>((ctx2, itm2) => { // only mapp the id ctx2.AddLine("Id", itm2.Id); }); // only add Value and Dbl but ignore Id ctx.Map("Inner", itm.Inner); ctx.AddLine("OuterValue", itm.Value); }); }); var snapshot = new { Item = "item", Data = new CustomData { Id = 1, Dbl = 2.2, Value = "value", Inner = new InnerData { Id = 2, Value = "inner" } } }.Tokenize(options); var expected = new { Data = new { OuterValue = "value", Inner = new { Id = 2 } }, Item = "item", }.Tokenize(); snapshot.ToString().Should().Be(expected.ToString()); }
public void SnapshotOptions_IsValueType_Custom() { var options = SnapshotOptions.Create(o => { o.EvaluateValueType((type, obj) => type.IsValueType && type != typeof(string)); }); options.IsValueType(typeof(int), 1).Should().BeTrue(); options.IsValueType(typeof(string), "1").Should().BeFalse(); }
public void Directive_Extension_ReplaceGuid() { var options = SnapshotOptions.Create(o => { // ignore Guids when comparing o.AddDirective(s => s.ReplaceGuid()); }); new { Value = Guid.NewGuid() }.MatchSnapshot(options); }
public void Snapshot_Options_UseBasicFormatters_Formatter_SimpleString() { // reset SnapshotOptions.Setup(o => { o.UseBasicFormatters(); }); SnapshotOptions.Default.Formatters[typeof(string)].Should().BeOfType <SimpleStringFormatter>(); }
public void Snapshot_Options_UseBasicFormatters_Formatter_Type() { // reset SnapshotOptions.Setup(o => { o.UseBasicFormatters(); }); SnapshotOptions.Default.Formatters[typeof(Type)].Should().BeOfType <TypeFormatter>(); }
public void SnapshotOptions_Merge_UpdateSnapshot_Default() { SnapshotOptions.Default.UpdateSavedSnapshot(); var options = SnapshotOptions.Create(o => { }); options.MergeDefault(); options.UpdateSnapshot.Should().Be(SnapshotOptions.Default.UpdateSnapshot).And.BeTrue(); }
public void Snapshot_Options_UseBasicFormatters_CustomOptions() { // reset var options = SnapshotOptions.Create(o => { o.UseBasicFormatters(); }); options.Formatters.Count().Should().Be(2); }
public void Snapshot_Options_DefaultOptions_Parser_AfterReset() { // ignore Guids when comparing var parser = SnapshotOptions.Default.Parser; // reset SnapshotOptions.Setup(o => { }); Assert.AreNotSame(SnapshotOptions.Default.Parser, parser); }
public void Snapshot_Options_UseBasicFormatters_Count() { // reset SnapshotOptions.Setup(o => { o.UseBasicFormatters(); }); SnapshotOptions.Default.Formatters.Count().Should().Be(2); }
public void Options_Directives_ReplaceDateTime() { var options = SnapshotOptions.Create(o => { // ignore DateTime when comparing o.AddDirective(s => s.ReplaceDateTime()); }); new { Value = DateTime.Now }.MatchSnapshot(options); }
public void Options_Directives_ReplaceDateTime_CustomFormat() { var options = SnapshotOptions.Create(o => { // ignore Guids when comparing o.AddDirective(s => s.ReplaceDateTime("datetime replacement")); }); new { Value = DateTime.Now }.MatchSnapshot(options); }
public void Options_Directives_ReplaceGuid_CustomFormat() { var options = SnapshotOptions.Create(o => { // ignore Guids when comparing o.AddDirective(s => s.ReplaceGuid("guid replacement")); }); new { Value = Guid.NewGuid() }.MatchSnapshot(options); }
public void Snapshot_Options_AddDirectives_DefaultOptions_Parser() { // ignore Guids when comparing SnapshotOptions.Default.Parser.AddDirective(s => s.ReplaceRegex(@"(?im)[{(]?[0-9A-Fa-f]{8}[-]?(?:[0-9A-Fa-f]{4}[-]?){3}[0-9A-Fa-f]{12}[)}]?", "00000000-0000-0000-0000-000000000000")); new { Value = Guid.NewGuid() }.MatchSnapshot(); // reset SnapshotOptions.Setup(o => { }); }
public void Snapshot_Options_AddDirectives() { var options = SnapshotOptions.Create(o => { // ignore Guids when comparing o.AddDirective(s => s.ReplaceRegex(@"(?im)[{(]?[0-9A-Fa-f]{8}[-]?(?:[0-9A-Fa-f]{4}[-]?){3}[0-9A-Fa-f]{12}[)}]?", "00000000-0000-0000-0000-000000000000")); }); new { Value = Guid.NewGuid() }.MatchSnapshot(options); }
public void Snapshot_Options_UseBasicFormatters_CustomOptions_DefaultSet() { SnapshotOptions.Setup(o => { o.UseBasicFormatters(); }); var options = SnapshotOptions.Create(o => { }); options.Formatters.Count().Should().Be(2); }
public void SnapshotOptions_Merge_Comparer_Custom() { var options = SnapshotOptions.Create(o => { o.SetComparer((l1, l2) => true); }); options.MergeDefault(); options.Comparer.Should().NotBeSameAs(SnapshotOptions.Default.Comparer); }
public void Snapshot_Options_DefaultParserAfterMerge() { var options = new SnapshotOptions(); // ensure parser is created _ = options.Parser; _ = SnapshotOptions.Default.Parser; options = options.MergeDefault(); Assert.AreNotSame(options.Parser, SnapshotOptions.Default.Parser); }