def test_optional_values(self):
        definition = "shots/{Sequence}/{Shot}/{Step}/work/{Shot}[.{branch}][.v{version}][.{snapshot}.ma]"
        template = TemplatePath(definition, self.keys, self.project_root)

        # test all combinations of optional values
        # branch T   version T   snapshot T
        test_path = os.path.join(
            self.project_root,
            "shots",
            "seq_1",
            "s1",
            "Anm",
            "work",
            "s1.mmm.v003.002.ma",
        )
        self.assertTrue(template.validate(test_path))

        # branch T   version T   snapshot F
        test_path = os.path.join(self.project_root, "shots", "seq_1", "s1",
                                 "Anm", "work", "s1.mmm.v003")
        self.assertTrue(template.validate(test_path))

        # branch T   version F   snapshot T
        test_path = os.path.join(self.project_root, "shots", "seq_1", "s1",
                                 "Anm", "work", "s1.mmm.002.ma")
        self.assertTrue(template.validate(test_path))

        # branch T   version F   snapshot F
        test_path = os.path.join(self.project_root, "shots", "seq_1", "s1",
                                 "Anm", "work", "s1.mmm")
        self.assertTrue(template.validate(test_path))

        # branch F   version T   snapshot T
        test_path = os.path.join(self.project_root, "shots", "seq_1", "s1",
                                 "Anm", "work", "s1.v003.002.ma")
        self.assertTrue(template.validate(test_path))

        # branch F   version T   snapshot F
        test_path = os.path.join(self.project_root, "shots", "seq_1", "s1",
                                 "Anm", "work", "s1.v003")
        self.assertTrue(template.validate(test_path))

        # branch F   version F   snapshot T
        test_path = os.path.join(self.project_root, "shots", "seq_1", "s1",
                                 "Anm", "work", "s1.002.ma")
        self.assertTrue(template.validate(test_path))

        # branch F   version F   snapshot F
        test_path = os.path.join(self.project_root, "shots", "seq_1", "s1",
                                 "Anm", "work", "s1")
        self.assertTrue(template.validate(test_path))
    def test_optional_values(self):
        definition = "shots/{Sequence}/{Shot}/{Step}/work/{Shot}[.{branch}][.v{version}][.{snapshot}.ma]"
        template = TemplatePath(definition, self.keys, self.project_root)

        # test all combinations of optional values
        # branch T   version T   snapshot T
        test_path = os.path.join(self.project_root, "shots", "seq_1", "s1", "Anm", "work", "s1.mmm.v003.002.ma")
        self.assertTrue(template.validate(test_path))

        # branch T   version T   snapshot F
        test_path = os.path.join(self.project_root, "shots", "seq_1", "s1", "Anm", "work", "s1.mmm.v003")
        self.assertTrue(template.validate(test_path))

        # branch T   version F   snapshot T
        test_path = os.path.join(self.project_root, "shots", "seq_1", "s1", "Anm", "work", "s1.mmm.002.ma")
        self.assertTrue(template.validate(test_path))

        # branch T   version F   snapshot F
        test_path = os.path.join(self.project_root, "shots", "seq_1", "s1", "Anm", "work", "s1.mmm")
        self.assertTrue(template.validate(test_path))

        # branch F   version T   snapshot T
        test_path = os.path.join(self.project_root, "shots", "seq_1", "s1", "Anm", "work", "s1.v003.002.ma")
        self.assertTrue(template.validate(test_path))

        # branch F   version T   snapshot F
        test_path = os.path.join(self.project_root, "shots", "seq_1", "s1", "Anm", "work", "s1.v003")
        self.assertTrue(template.validate(test_path))

        # branch F   version F   snapshot T
        test_path = os.path.join(self.project_root, "shots", "seq_1", "s1", "Anm", "work", "s1.002.ma")
        self.assertTrue(template.validate(test_path))

        # branch F   version F   snapshot F
        test_path = os.path.join(self.project_root, "shots", "seq_1", "s1", "Anm", "work", "s1")
        self.assertTrue(template.validate(test_path))