Example #1
0
        public void SaveSnapshots()
        {
            var snapshotId = _snapshotResolver.ResolveSnapshotSetup();

            var writer = new SnapshotWriter();

            // record the current snapshot
            var dataOne = "this is\r\na\r\ntest";
            var token   = SnapshotTokenizer.Tokenize(dataOne)
                          .SetMetadata(() => new { id = "one" });

            writer.Write(token, snapshotId);

            var dataTwo = "this is\r\na second\r\ntest";

            token = SnapshotTokenizer.Tokenize(dataTwo)
                    .SetMetadata(() => new { id = "two" });

            writer.Write(token, snapshotId);

            // ensure there are 2 snapshots in the file
            var reader = new SnapshotReader();
            var saved  = reader.Read(snapshotId);

            saved.Count().Should().Be(2);

            // match the snapshots
            dataOne.MatchSnapshot(() => new { id = "one" });
            dataTwo.MatchSnapshot(() => new { id = "two" });

            //delete file and folder
            System.IO.File.Delete(snapshotId.GetFilePath());
        }
Example #2
0
        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 => { });
        }
        public void MatchSnapshotToken()
        {
            var    token = SnapshotTokenizer.Tokenize("match\r\nsnapshot\r\ntoken");
            Action match = () => token.MatchSnapshot();

            match.Should().NotThrow();
        }
        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);
        }
Example #5
0
        public void UpdateSnapshot()
        {
            var snapshotId = _snapshotResolver.ResolveSnapshotSetup();

            var writer = new SnapshotWriter();

            // record the current snapshot
            var data  = "this is\r\na\r\ntest";
            var token = SnapshotTokenizer.Tokenize(data);

            writer.Write(token, snapshotId);

            // ensure the data matches
            data.MatchSnapshot();

            data  = "this is\r\nnew\r\ndata";
            token = SnapshotTokenizer.Tokenize(data);
            writer.Write(token, snapshotId);

            // ensure the data is updated
            data.MatchSnapshot();

            //delete file and folder
            System.IO.File.Delete(snapshotId.GetFilePath());
        }
Example #6
0
        public void Mapper_Dictionaries_String()
        {
            var item = new
            {
                Dict = new Dictionary <string, string>
                {
                    { "1", "one" },
                    { "2", "two" }
                }
            };

            SnapshotTokenizer.Tokenize(item).ToString().Should().Be($"Dict:{Environment.NewLine}  Key: 1{Environment.NewLine}  Value: one{Environment.NewLine}  Key: 2{Environment.NewLine}  Value: two");
        }
Example #7
0
        public void CustomObjectMap()
        {
            ObjectMapper.Configure <CustomMapClass>(m =>
            {
                var token = SnapshotTokenizer.Tokenize(m.Value);
                return(token);
            });

            var itm = new CustomMapClass
            {
                Value = "some value",
                Index = 0
            };

            itm.MatchSnapshot();
        }
Example #8
0
        public void SaveSnapshot()
        {
            var data = "this is\r\na\r\ntest";

            var snapshotId = _snapshotResolver.ResolveSnapshotSetup();
            var token      = SnapshotTokenizer.Tokenize(data);

            var writer = new SnapshotWriter();

            writer.Write(token, snapshotId);

            //reload snapshot to compare
            data.MatchSnapshot();

            //delete file and folder
            System.IO.File.Delete(snapshotId.GetFilePath());
        }
Example #9
0
        public void Mapper_Dictionaries()
        {
            var item = new
            {
                Dict = new Dictionary <string, DictionaryItem>
                {
                    { "1", new DictionaryItem {
                          Id = 1, Value = "one"
                      } },
                    { "2", new DictionaryItem {
                          Id = 2, Value = "two"
                      } }
                }
            };

            SnapshotTokenizer.Tokenize(item).ToString().Should().Be($"Dict:{Environment.NewLine}  Key: 1{Environment.NewLine}  Value:{Environment.NewLine}    Id: 1{Environment.NewLine}    Value: one{Environment.NewLine}  Key: 2{Environment.NewLine}  Value:{Environment.NewLine}    Id: 2{Environment.NewLine}    Value: two");
        }
Example #10
0
        public void SnapshotTokenizer_MapToToken_MergeMeta_CustomMapper()
        {
            ObjectMapper.Configure <TokenizerTestItem>(item =>
            {
                var snapshot = SnapshotTokenizer.Tokenize(new { id = item.Id });
                snapshot.SetMetadata(() => new
                {
                    Id = item.Id
                });

                return(snapshot);
            });

            var token = SnapshotTokenizer.MapToToken(new TokenizerTestItem {
                Id = 1
            });

            token.Metadata["Id"].Should().Be("1");
        }
Example #11
0
        public void Snapshot_Options()
        {
            var sn = new StringBuilder()
                     .AppendLine("Line 1")
                     .AppendLine("Line 2")
                     .AppendLine("Line 3");

            var snapshot = SnapshotTokenizer.Tokenize(sn.ToString());

            snapshot.MatchSnapshot(SnapshotOptions.Create(c =>
            {
                c.UpdateSavedSnapshot();
            }));

            sn = new StringBuilder()
                 .AppendLine("Line    1")
                 .AppendLine("   Line 2")
                 .AppendLine("  Line     3");

            snapshot = SnapshotTokenizer.Tokenize(sn.ToString());

            var options = new SnapshotOptions
            {
                Comparer = new LineCompare((newline, savedline) => newline.Value.Replace(" ", string.Empty, StringComparison.OrdinalIgnoreCase).Equals(savedline.Value.Replace(" ", string.Empty, StringComparison.OrdinalIgnoreCase)))
            };

            snapshot.MatchSnapshot(options);



            options = SnapshotOptions.Create(o =>
            {
                o.SetComparer((newline, savedline) => newline.Value.Replace(" ", string.Empty, StringComparison.OrdinalIgnoreCase).Equals(savedline.Value.Replace(" ", string.Empty, StringComparison.OrdinalIgnoreCase)));
            });

            snapshot.MatchSnapshot(options);

            // reset
            SnapshotOptions.Setup(o => { });
        }
Example #12
0
        public void MatchMultipleSnapshotTokens()
        {
            var token = SnapshotTokenizer.Tokenize("test\r\nsnapshot\r\none")
                        .SetMetadata(() => new { id = "one" });

            Action match = () => token.MatchSnapshot();

            match.Should().NotThrow();

            token = SnapshotTokenizer.Tokenize("test\r\nsnapshot\r\ntwo")
                    .SetMetadata(() => new { id = "2" });

            match = () => token.MatchSnapshot();
            match.Should().NotThrow();

            var snapshotResolver = new SnapshotSetupResolver();
            var reader           = new SnapshotReader();
            var snapshots        = reader.Read(snapshotResolver.ResolveSnapshotSetup());

            snapshots.Count().Should().Be(2);
            snapshots.Any(s => s.Metadata["id"] == "one").Should().BeTrue();
            snapshots.Any(s => s.Metadata["id"] == "2").Should().BeTrue();
        }
 /// <summary>
 /// create a tokenized snapshot of the object
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="token"></param>
 /// <param name="options"></param>
 /// <returns></returns>
 public static Snapshot Tokenize <T>(this T token, SnapshotOptions options)
 {
     return(SnapshotTokenizer.Tokenize(token, options));
 }
 /// <summary>
 /// create a tokenized snapshot of the object
 /// </summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="token"></param>
 /// <returns></returns>
 public static Snapshot Tokenize <T>(this T token)
 {
     return(SnapshotTokenizer.Tokenize(token));
 }