def test_has_details(self): """Level "has_details" flag""" attrs = cubes.attribute_list(["year"]) level = cubes.Level("year", attrs) self.assertFalse(level.has_details) attrs = cubes.attribute_list(["month", "month_name"]) level = cubes.Level("month", attrs) self.assertTrue(level.has_details)
def setUp(self): self.levels = [ cubes.Level("year", attributes=["year"]), cubes.Level("month", attributes=["month", "month_name", "month_sname"]), cubes.Level("day", attributes=["day"]), cubes.Level("week", attributes=["week"]) ] self.level_names = [level.name for level in self.levels] self.dimension = cubes.Dimension("date", levels=self.levels) self.hierarchy = cubes.Hierarchy("default", ["year", "month", "day"], self.dimension)
def test_comparison(self): """Comparison of level instances""" attrs = cubes.attribute_list(["info", "code", "name"]) level1 = cubes.Level("product", attrs, key="code", label_attribute="name") level2 = cubes.Level("product", attrs, key="code", label_attribute="name") level3 = cubes.Level("product", attrs) attrs = cubes.attribute_list(["month", "month_name"]) level4 = cubes.Level("product", attrs) self.assertEqual(level1, level2) self.assertNotEqual(level2, level3) self.assertNotEqual(level2, level4)
def test_simplify(self): """Simplification of attribute reference (with and without details)""" level = cubes.Level("name", attributes=["name"]) dim = cubes.Dimension("group", levels=[level]) attr = dim.attribute("name") self.assertEqual("name", attr.name) self.assertEqual("name", str(attr)) self.assertEqual("group", attr.ref()) self.assertEqual("group.name", attr.ref(simplify=False)) self.assertEqual("group", attr.ref(simplify=True)) level = cubes.Level("name", attributes=["key", "name"]) dim = cubes.Dimension("group", levels=[level]) attr = dim.attribute("name") self.assertEqual("name", attr.name) self.assertEqual("name", str(attr)) self.assertEqual("group.name", attr.ref()) self.assertEqual("group.name", attr.ref(simplify=False)) self.assertEqual("group.name", attr.ref(simplify=True))
def test_key_label_attributes(self): """Test key and label attributes - explicit and implicit""" attrs = cubes.attribute_list(["code"]) level = cubes.Level("product", attrs) self.assertIsInstance(level.key, cubes.Attribute) self.assertEqual("code", str(level.key)) self.assertIsInstance(level.label_attribute, cubes.Attribute) self.assertEqual("code", str(level.label_attribute)) attrs = cubes.attribute_list(["code", "name"]) level = cubes.Level("product", attrs) self.assertIsInstance(level.key, cubes.Attribute) self.assertEqual("code", str(level.key)) self.assertIsInstance(level.label_attribute, cubes.Attribute) self.assertEqual("name", str(level.label_attribute)) attrs = cubes.attribute_list(["info", "code", "name"]) level = cubes.Level("product", attrs, key="code", label_attribute="name") self.assertIsInstance(level.key, cubes.Attribute) self.assertEqual("code", str(level.key)) self.assertIsInstance(level.label_attribute, cubes.Attribute) self.assertEqual("name", str(level.label_attribute)) # Test key/label in full desc desc = { "name": "product", "attributes": ["info", "code", "name"], "label_attribute": "name", "key": "code" } level = cubes.create_level(desc) self.assertIsInstance(level.key, cubes.Attribute) self.assertEqual("code", str(level.key)) self.assertIsInstance(level.label_attribute, cubes.Attribute) self.assertEqual("name", str(level.label_attribute))
def test_coalesce_attribute(self): """Coalesce attribute object (string or Attribute instance)""" level = cubes.Level("name", attributes=["key", "name"]) dim = cubes.Dimension("group", levels=[level]) obj = cubes.coalesce_attribute("name") self.assertIsInstance(obj, cubes.Attribute) self.assertEqual("name", obj.name) obj = cubes.coalesce_attribute({"name": "key"}, dim) self.assertIsInstance(obj, cubes.Attribute) self.assertEqual("key", obj.name) self.assertEqual(dim, obj.dimension) attr = dim.attribute("key") obj = cubes.coalesce_attribute(attr) self.assertIsInstance(obj, cubes.Attribute) self.assertEqual("key", obj.name) self.assertEqual(obj, attr)
def test_operators(self): """Level to string conversion""" self.assertEqual("date", str(cubes.Level("date", ["foo"])))