public void AlteringObjectPerspectiveTest()
        {
            Directory.CreateDirectory("test_2_8_annotations2");
            File.WriteAllText(@"test_2_8_annotations2\database.json", DatabaseJsonCompare);
            var handler = new TabularModelHandler(@"test_2_8_annotations2\database.json");
            var model   = handler.Model;
            var t2      = model.Tables["Table 2"];
            var c2      = t2.Columns["Column 2"];

            Assert.IsTrue(c2.InPerspective["Perspective 2"]);

            c2.InPerspective["Perspective 2"] = false;
            Assert.IsFalse(c2.InPerspective["Perspective 2"]);
            handler.Save("test_2_8_annotations2", SaveFormat.TabularEditorFolder, null, true);

            handler = new TabularModelHandler(@"test_2_8_annotations2\database.json");
            model   = handler.Model;
            t2      = model.Tables["Table 2"];
            c2      = t2.Columns["Column 2"];
            Assert.IsFalse(c2.InPerspective["Perspective 2"]);

            c2.InPerspective["Perspective 2"] = true;
            Assert.IsTrue(c2.InPerspective["Perspective 2"]);
            handler.Save("test_2_8_annotations2", SaveFormat.TabularEditorFolder, null, true);

            var databaseJson = File.ReadAllText(@"test_2_8_annotations2\database.json");

            Assert.AreEqual(DatabaseJsonCompare, databaseJson);
        }
Ejemplo n.º 2
0
        public void ModelWithTranslationsSerialization()
        {
            var handler  = new TabularModelHandler();
            var model    = handler.Model;
            var t1       = model.AddCalculatedTable("NewTable");
            var m1       = t1.AddMeasure("Measure1", "123");
            var culture1 = model.AddTranslation("en-US");
            var culture2 = model.AddTranslation("da-DK");

            m1.TranslatedNames[culture1] = "Measure1US";
            m1.TranslatedNames[culture2] = "Measure1DK";

            Assert.AreEqual("{\"da-DK\":\"Measure1DK\",\"en-US\":\"Measure1US\"}", m1.TranslatedNames.ToJson());

            Directory.CreateDirectory("test_2_7_4_translation_serialization");
            handler.Save("test_2_7_4_translation_serialization", SaveFormat.TabularEditorFolder,
                         new TabularEditor.TOMWrapper.Serialization.SerializeOptions()
            {
                Levels            = new System.Collections.Generic.HashSet <string>(),
                LocalTranslations = true
            });

            var savedMetadata = File.ReadAllText(@"test_2_7_4_translation_serialization\database.json");

            Assert.AreEqual(DatabaseJson, savedMetadata);
        }
        public void EnsureAnnotationsAreRemovedTest()
        {
            Directory.CreateDirectory("test_2_8_annotations2");
            File.WriteAllText(@"test_2_8_annotations1\database.json", DatabaseJsonCompare);
            var handler = new TabularModelHandler(@"test_2_8_annotations1\database.json");

            var items = handler.Model.GetChildrenRecursive(true).ToList();

            foreach (var item in items.OfType <IAnnotationObject>())
            {
                if (item is Model)
                {
                    Assert.AreEqual(1, item.GetAnnotationsCount());
                    Assert.IsTrue(item.HasAnnotation("TabularEditor_SerializeOptions"));
                }
                else
                {
                    Assert.AreEqual(0, item.GetAnnotationsCount());
                }
            }

            handler.Save("test_2_8_annotations1", SaveFormat.TabularEditorFolder, null, true);

            var databaseJson = File.ReadAllText(@"test_2_8_annotations1\database.json");

            Assert.AreEqual(DatabaseJsonCompare, databaseJson);
        }
        public void CheckPerspectiveMembershipAfterSerialization_Positive()
        {
            {
                var    handler = new TabularModelHandler();
                var    model   = handler.Model;
                Table  t1      = model.AddCalculatedTable("Table1");
                Column c1      = t1.AddCalculatedColumn("Column1");
                Column c2      = t1.AddCalculatedColumn("Column2");
                var    p1      = model.AddPerspective("TestPerspective");

                c1.InPerspective[p1] = true;
                Assert.AreEqual(true, t1.InPerspective[p1]);
                Assert.AreEqual(true, c1.InPerspective[p1]);
                Assert.AreEqual(false, c2.InPerspective[p1]);

                Directory.CreateDirectory("test_2_7_4_perspective_membership_1");
                handler.Save("test_2_7_4_perspective_membership_1", SaveFormat.TabularEditorFolder, new SerializeOptions {
                    LocalPerspectives = true
                });
            }

            {
                // Load from folder:
                var handler = new TabularModelHandler("test_2_7_4_perspective_membership_1");
                var model   = handler.Model;
                var p1      = model.Perspectives["TestPerspective"];
                var t1      = model.Tables["Table1"];
                var c1      = t1.Columns["Column1"];
                var c2      = t1.Columns["Column2"];

                Assert.AreEqual(true, t1.InPerspective[p1]);
                Assert.AreEqual(true, c1.InPerspective[p1]);
                Assert.AreEqual(false, c2.InPerspective[p1]);
            }
        }
Ejemplo n.º 5
0
        public void DeserializeAllTest()
        {
            var handler = new TabularModelHandler("NewDeserializer.bim");
            var model   = handler.Model;

            handler.Save("NewDeserializerFolderTest", SaveFormat.TabularEditorFolder, SerializeOptions.DefaultFolder, true);

            handler = new TabularModelHandler("NewDeserializerFolderTest");
            handler.Save("NewDeserializerAfterLoad.bim", SaveFormat.ModelSchemaOnly, SerializeOptions.Default, true);

            var file1 = File.ReadAllText("NewDeserializer.bim");
            var file2 = File.ReadAllText("NewDeserializerAfterLoad.bim");

            Assert.AreEqual(file1, file2);
        }
Ejemplo n.º 6
0
        public void TestDualSerialization()
        {
            var handler1 = new TabularModelHandler(1500);

            handler1.Save("TestSaveAsFolder", SaveFormat.TabularEditorFolder, SerializeOptions.DefaultFolder, false, false, false);
            var annotation1 = handler1.Model.GetAnnotation("TabularEditor_SerializeOptions");

            CommandLine("TestSaveAsFolder", "-BUILD", "TestFromSaveAsFolder.bim");
            CommandLine("TestFromSaveAsFolder.bim", "-FOLDER", "TestSaveAsFolder2");

            var handler2    = new TabularModelHandler("TestFromSaveAsFolder.bim");
            var annotation2 = handler2.Model.GetAnnotation("TabularEditor_SerializeOptions");

            var handler3    = new TabularModelHandler("TestSaveAsFolder2");
            var annotation3 = handler2.Model.GetAnnotation("TabularEditor_SerializeOptions");

            Assert.AreEqual(annotation1, annotation2, "Model should retain serialization settings when saved from CLI");
            Assert.AreEqual(annotation1, annotation3, "Model should retain serialization settings when saved from CLI");
        }
        public void CheckPerspectiveAnnotationAfterSave()
        {
            var handler = new TabularModelHandler();
            var model   = handler.Model;
            var p1      = model.AddPerspective("TestPerspective");

            p1.SetAnnotation("TestAnnotation", "TestAnnotationValue");

            Directory.CreateDirectory("test_2_7_4_perspective_annotation_2");
            handler.Save("test_2_7_4_perspective_annotation_2", SaveFormat.TabularEditorFolder, SerializeOptions.Default);

            Assert.AreEqual("TestAnnotationValue", p1.GetAnnotation("TestAnnotation"));

            // Load from folder:
            handler = new TabularModelHandler("test_2_7_4_perspective_annotation_2");
            model   = handler.Model;
            p1      = model.Perspectives["TestPerspective"];
            Assert.AreEqual("TestAnnotationValue", p1.GetAnnotation("TestAnnotation"));
        }
Ejemplo n.º 8
0
        private void InternalHandleCommandLine(string[] args)
        {
            upperArgList = args.Select(arg => arg.ToUpper()).ToList();
            argList      = args.ToList();
            if (upperArgList.Contains("-?") || upperArgList.Contains("/?") || upperArgList.Contains("-H") || upperArgList.Contains("/H") || upperArgList.Contains("HELP"))
            {
                OutputUsage();
                return;
            }

            var vstsLogging   = upperArgList.IndexOf("-VSTS") > -1 || upperArgList.IndexOf("-V") > -1;
            var githubLogging = upperArgList.IndexOf("-GITHUB") > -1 || upperArgList.IndexOf("-G") > -1;

            if (vstsLogging && githubLogging)
            {
                Error("Invalid argument syntax (choose either -V/-VSTS or -G/-GITHUB, not both)");
                OutputUsage();
                return;
            }
            LoggingMode = vstsLogging ? LoggingMode.Vsts : githubLogging ? LoggingMode.GitHub : LoggingMode.None;

            warnOnUnprocessed = upperArgList.IndexOf("-WARN") > -1 || upperArgList.IndexOf("-W") > -1;
            errorOnDaxErr     = upperArgList.IndexOf("-ERR") > -1 || upperArgList.IndexOf("-E") > -1;

            LoadModel();

            var    doTestRun   = upperArgList.IndexOf("-T");
            string testRunFile = null;

            if (doTestRun == -1)
            {
                doTestRun = upperArgList.IndexOf("-TRX");
            }
            if (doTestRun > -1)
            {
                if (upperArgList.Count <= doTestRun || upperArgList[doTestRun + 1].StartsWith("-"))
                {
                    Error("Invalid argument syntax.\n");
                    OutputUsage();
                    return;
                }
                Program.testRun = new TestRun(Handler.Database?.Name ?? Handler.Source);
                testRunFile     = argList[doTestRun + 1];
            }

            var doScript = upperArgList.IndexOf("-SCRIPT");

            if (doScript == -1)
            {
                doScript = upperArgList.IndexOf("-S");
            }
            if (doScript > -1)
            {
                if (upperArgList.Count <= doScript)
                {
                    Error("Invalid argument syntax.\n");
                    OutputUsage();
                    return;
                }
                ScriptFiles = argList.Skip(doScript + 1).TakeWhile(s => !s.StartsWith("-")).ToList();
            }

            var doCheckDs = upperArgList.IndexOf("-SCHEMACHECK");

            if (doCheckDs == -1)
            {
                doCheckDs = upperArgList.IndexOf("-SC");
            }

            string saveToFolderOutputPath = null;
            string saveToFolderReplaceId  = null;

            var doSaveToFolder = upperArgList.IndexOf("-FOLDER");

            if (doSaveToFolder == -1)
            {
                doSaveToFolder = upperArgList.IndexOf("-F");
            }
            if (doSaveToFolder > -1)
            {
                if (upperArgList.Count <= doSaveToFolder)
                {
                    Error("Invalid argument syntax.\n");
                    OutputUsage();
                    return;
                }
                saveToFolderOutputPath = argList[doSaveToFolder + 1];
                if (doSaveToFolder + 2 < argList.Count && !argList[doSaveToFolder + 2].StartsWith("-"))
                {
                    saveToFolderReplaceId = argList[doSaveToFolder + 2];
                }
                var directoryName = new FileInfo(saveToFolderOutputPath).Directory.FullName;
                Directory.CreateDirectory(saveToFolderOutputPath);
            }

            string buildOutputPath = null;
            string buildReplaceId  = null;

            var doSave = upperArgList.IndexOf("-BUILD");

            if (doSave == -1)
            {
                doSave = upperArgList.IndexOf("-B");
            }
            if (doSave == -1)
            {
                doSave = upperArgList.IndexOf("-BIM");
            }
            if (doSave > -1)
            {
                if (upperArgList.Count <= doSave)
                {
                    Error("Invalid argument syntax.\n");
                    OutputUsage();
                    return;
                }
                buildOutputPath = argList[doSave + 1];
                if (doSave + 2 < argList.Count && !argList[doSave + 2].StartsWith("-"))
                {
                    buildReplaceId = argList[doSave + 2];
                }
                var directoryName = new FileInfo(buildOutputPath).Directory.FullName;
                Directory.CreateDirectory(directoryName);
            }

            if (doSaveToFolder > -1 && doSave > -1)
            {
                Error("-FOLDER and -BUILD arguments are mutually exclusive.\n");
                OutputUsage();
                return;
            }

            if (doScript > -1)
            {
                ExecuteScripts();
            }

            if (doCheckDs > -1)
            {
                Console.WriteLine("Checking source schema...");
                ScriptHelper.SchemaCheck(Handler.Model);
            }

            if (!string.IsNullOrEmpty(buildOutputPath))
            {
                Console.WriteLine("Building Model.bim file...");
                if (buildReplaceId != null)
                {
                    Handler.Database.Name = buildReplaceId; Handler.Database.ID = buildReplaceId;
                }
                Handler.Save(buildOutputPath, SaveFormat.ModelSchemaOnly, null, true);
            }
            else if (!string.IsNullOrEmpty(saveToFolderOutputPath))
            {
                Console.WriteLine("Saving Model.bim file to Folder Output Path ...");
                if (buildReplaceId != null)
                {
                    Handler.Database.Name = buildReplaceId; Handler.Database.ID = buildReplaceId;
                }

                //Note the last parameter, we use whatever SerializeOptions are already in the file
                Handler.Save(saveToFolderOutputPath, SaveFormat.TabularEditorFolder, null, true);
            }

            var doAnalyze = upperArgList.IndexOf("-ANALYZE");

            if (doAnalyze == -1)
            {
                doAnalyze = upperArgList.IndexOf("-A");
            }
            if (doAnalyze > -1)
            {
                var rulefile = doAnalyze + 1 < argList.Count ? argList[doAnalyze + 1] : "";
                if (rulefile.StartsWith("-") || string.IsNullOrEmpty(rulefile))
                {
                    rulefile = null;
                }

                AnalyzeBestPracticeRules(rulefile, true);
            }

            var doAnalyzeX = upperArgList.IndexOf("-ANALYZEX");

            if (doAnalyzeX == -1)
            {
                doAnalyzeX = upperArgList.IndexOf("-AX");
            }
            if (doAnalyzeX > -1)
            {
                var rulefile = doAnalyzeX + 1 < argList.Count ? argList[doAnalyzeX + 1] : "";
                if (rulefile.StartsWith("-") || string.IsNullOrEmpty(rulefile))
                {
                    rulefile = null;
                }

                AnalyzeBestPracticeRules(rulefile, false);
            }

            var doDeploy = upperArgList.IndexOf("-DEPLOY");

            if (doDeploy == -1)
            {
                doDeploy = upperArgList.IndexOf("-D");
            }
            if (doDeploy > -1)
            {
                var serverName = argList.Skip(doDeploy + 1).FirstOrDefault(); if (serverName == null || serverName.StartsWith("-"))
                {
                    serverName = null;
                }
                var databaseID = argList.Skip(doDeploy + 2).FirstOrDefault(); if (databaseID != null && databaseID.StartsWith("-"))
                {
                    databaseID = null;
                }

                Deploy(serverName, databaseID, doDeploy);
            }
            if (Program.testRun != null)
            {
                Program.testRun.SerializeAsVSTest(testRunFile);
                Console.WriteLine("VSTest XML file saved: " + testRunFile);
            }
        }