Exemplo n.º 1
0
        private void AssertElementHash(Model model, string relativeUri, string expectedHash)
        {
            var element     = model.Resolve(new Uri(relativeUri, UriKind.Relative));
            var elementHash = Convert.ToBase64String(ModelHasher.CreateHash(element));

            Assert.AreEqual(expectedHash, elementHash);
        }
Exemplo n.º 2
0
        public void Hash_ComputedCorrectly()
        {
            var model          = LoadRailwayModel(new ModelRepository());
            var referenceModel = LoadRailwayModel(new ModelRepository());

            var hash1 = Convert.ToBase64String(ModelHasher.CreateHash(model));
            var hash2 = Convert.ToBase64String(ModelHasher.CreateHash(referenceModel));

            Assert.AreEqual(hash1, hash2);
            Assert.AreEqual(hash1, "9AveIiH2st2d6elHogWwTPQQXGtPVrtkRcSffb9J+LGtXjJIS+EoKxCiTDKD2QjZpLd/cLX1DIS2lFYYEfZiVg==");


            AssertElementHash(model.Model, "#//@invalids.0/@definedBy.24/@elements.5", "iEjxOMgHlUQ4DVraE6OLqtB6YejmpRQBnzUJoYCLyENqTrjX8Grpln2C38v0VGppvwSGcWy2ORQdAdTiEl4Wng==");
            AssertElementHash(model.Model, "#//@invalids.0/@definedBy.24", "JIxRgzBllkPg7Y3sYxRSP8NQ40xwLuRVhfFUNw8tNN7ngOjVT/km6nT0KGhitqX61txCKjmN/469hD14Ewb3TA==");
            AssertElementHash(model.Model, "#//@invalids.0/@follows.1", "trtBI8OljhfVs4oLQ/ZQwsSs5sxxhe4kbx1ABXOEc+PYjj8pWWxwqpysvcJEeq+nPGGvvNUJULNNAm2FMu+ThA==");
            AssertElementHash(model.Model, "#//@invalids.0", "28ycfeifjclgD25XnW/BKpka6ueUbBHZxWW8/E+i4EMf7AtylXqAgHvfIj3V2pQg06mHjfUhKj2XT1TjlSiPLg==");

            var sw = model.Invalids.OfType <Switch>().FirstOrDefault();

            sw.CurrentPosition = sw.CurrentPosition + 1;

            var hash3 = Convert.ToBase64String(ModelHasher.CreateHash(model));

            Assert.AreNotEqual(hash1, hash3);
        }
Exemplo n.º 3
0
        public void Hash_Debug_ComputedCorrectly()
        {
            var model          = LoadDebugModel(new ModelRepository());
            var referenceModel = LoadDebugModel(new ModelRepository());

            var hash1 = Convert.ToBase64String(ModelHasher.CreateHash(model));
            var hash2 = Convert.ToBase64String(ModelHasher.CreateHash(referenceModel));

            Assert.AreEqual(hash1, hash2);
            Assert.AreEqual(hash1, "Mvm7t+x8xMt23q8LYGI1UXtCUjb3toQVYQpzDcn0OZewW77JcTLyWb0X9qt8sgC1660s22VluIADXZ45AKx4Xw==");
        }
Exemplo n.º 4
0
        public void DynamicDeserializeAndHash_DebugModel_SameHashcodeAsStronglyTypedModel()
        {
            var baseUri = "http://github.com/NMFCode/NMF/Models/Models.Test/railway.railway";

            var repository = new ModelRepository();
            var metamodel  = repository.Resolve($"debug.nmf");
            var serializer = new DynamicModelSerializer(metamodel.RootElements[0] as INamespace);
            var instance   = serializer.Deserialize($"debug.debug") as IModelElement;
            var model      = new Model();

            model.ModelUri = new Uri(baseUri);
            model.RootElements.Add(instance);

            var hash = Convert.ToBase64String(ModelHasher.CreateHash(instance));

            Assert.AreEqual("Mvm7t+x8xMt23q8LYGI1UXtCUjb3toQVYQpzDcn0OZewW77JcTLyWb0X9qt8sgC1660s22VluIADXZ45AKx4Xw==", hash);
        }
Exemplo n.º 5
0
        private void TestLoadAndSerializeSucceeds(string baseName)
        {
            var repository = new ModelRepository();
            var metamodel  = repository.Resolve($"{baseName}.nmf");
            var serializer = new DynamicModelSerializer(metamodel.RootElements[0] as INamespace);
            var instance   = serializer.Deserialize($"{baseName}.{baseName}") as IModelElement;

            var originalHash = Convert.ToBase64String(ModelHasher.CreateHash(instance));

            using (var ms = new MemoryStream())
            {
                serializer.Serialize(instance, ms);
                ms.Position = 0;
                var newInstance = serializer.Deserialize(ms) as IModelElement;
                var newHash     = Convert.ToBase64String(ModelHasher.CreateHash(newInstance));

                Assert.AreEqual(originalHash, newHash);
            }
        }
Exemplo n.º 6
0
        public void DynamicDeserializeAndHash_RailwayModel_SameHashcodeAsStronglyTypedModel()
        {
            var baseUri = "http://github.com/NMFCode/NMF/Models/Models.Test/railway.railway";

            var repository = new ModelRepository();
            var metamodel  = repository.Resolve($"railway.nmf");
            var serializer = new DynamicModelSerializer(metamodel.RootElements[0] as INamespace);
            var instance   = serializer.Deserialize($"railway.railway") as IModelElement;
            var model      = new Model();

            model.ModelUri = new Uri(baseUri);
            model.RootElements.Add(instance);

            AssertElementHash(model, "#//@invalids.0/@definedBy.24/@elements.5", "iEjxOMgHlUQ4DVraE6OLqtB6YejmpRQBnzUJoYCLyENqTrjX8Grpln2C38v0VGppvwSGcWy2ORQdAdTiEl4Wng==");
            AssertElementHash(model, "#//@invalids.0/@definedBy.24", "JIxRgzBllkPg7Y3sYxRSP8NQ40xwLuRVhfFUNw8tNN7ngOjVT/km6nT0KGhitqX61txCKjmN/469hD14Ewb3TA==");
            AssertElementHash(model, "#//@invalids.0/@follows.1", "trtBI8OljhfVs4oLQ/ZQwsSs5sxxhe4kbx1ABXOEc+PYjj8pWWxwqpysvcJEeq+nPGGvvNUJULNNAm2FMu+ThA==");
            AssertElementHash(model, "#//@invalids.0", "28ycfeifjclgD25XnW/BKpka6ueUbBHZxWW8/E+i4EMf7AtylXqAgHvfIj3V2pQg06mHjfUhKj2XT1TjlSiPLg==");

            var hash = Convert.ToBase64String(ModelHasher.CreateHash(instance));

            Assert.AreEqual("9AveIiH2st2d6elHogWwTPQQXGtPVrtkRcSffb9J+LGtXjJIS+EoKxCiTDKD2QjZpLd/cLX1DIS2lFYYEfZiVg==", hash);
        }