public void ShortestPathTest() { var model = new TOMBuilder("dsstest.json").Model; var fromTable = model.Tables["Test_Vint"]; var toTable = model.Tables["Test_Date"]; Assert.IsNotNull(fromTable); Assert.IsNotNull(toTable); var shortpath = GetShortestPath(fromTable, toTable, model.Relationships.ToList()); Assert.AreEqual(1, shortpath.Count); Assert.AreEqual("Test_Vint", shortpath[0].FromTable.Name); Assert.AreEqual("Month", shortpath[0].FromColumn.Name); Assert.AreEqual("Test_Date", shortpath[0].ToTable.Name); Assert.AreEqual("DateKey", shortpath[0].ToColumn.Name); toTable = model.Tables["Test_GroupControl"]; shortpath = GetShortestPath(fromTable, toTable, model.Relationships.ToList()); Assert.AreEqual(2, shortpath.Count); Assert.AreEqual("Test_Vint", shortpath[1].FromTable.Name); Assert.AreEqual("Origination_ID", shortpath[1].FromColumn.Name); Assert.AreEqual("Test_GroupControl", shortpath[0].ToTable.Name); Assert.AreEqual("ID", shortpath[0].ToColumn.Name); }
public void RelationshipTest() { var builder = new TOMBuilder("dsstest.json"); var model = builder.Model; Assert.IsTrue(model.AllMeasures.Count() > 5); // get from and to tables from relationships var rels = model.Relationships; var fromTables = rels.Select(r => r.FromTable).Distinct().ToList(); var toTables = rels.Select(r => r.ToTable).Distinct().ToList(); // get tables from measure var pd2 = model.AllMeasures.Where(m => m.Name == "PD2").FirstOrDefault(); var pd2table = pd2.Table; Assert.AreEqual("Test_Vint", pd2table.Name); var pd2ReferencedByList = pd2.ReferencedBy; var isSimpleMeasure = pd2.IsSimpleMeasure; Assert.IsFalse(isSimpleMeasure); var dependsOn = pd2.DependsOn; Assert.AreEqual(2, dependsOn.Count); Assert.AreEqual(0, dependsOn.Columns.Count()); var dependsOnKeys = dependsOn.Keys; Assert.AreEqual(2, dependsOnKeys.Count()); var keyNames = dependsOnKeys.Select(k => k.DaxObjectName).ToList(); Assert.AreEqual(2, keyNames.Count); // key1 IDaxObject k1 = dependsOnKeys.Where(k => k.DaxObjectName == keyNames[0]).First(); Assert.IsTrue(k1 is Measure); var m1 = k1 as Measure; Assert.IsNotNull(m1); Assert.AreEqual(1, m1.DependsOn.Columns.Count()); var m1DepCol = m1.DependsOn.Columns.First(); Assert.AreEqual("Default_Accounts", m1DepCol.Name); Assert.AreEqual("Test_Vint", m1DepCol.Table.Name); IDaxObject k2 = dependsOnKeys.Where(k => k.DaxObjectName == keyNames[1]).First(); Assert.IsTrue(k2 is Measure); var m2 = k2 as Measure; Assert.IsNotNull(m2); Assert.AreEqual(1, m2.DependsOn.Columns.Count()); var m2DepCol = m2.DependsOn.Columns.First(); Assert.AreEqual("Booked_Accounts", m2DepCol.Name); Assert.AreEqual("Test_Orig", m2DepCol.Table.Name); }