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); }
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]); } }
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); }
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")); }
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); } }