def test_too_few_hyphens_after_barline_not_strict(self):
     parser = ParserCantusVolpiano()
     parser.parse('1---f---3-f', strict=False)
     parser.parse('1---f---3--f', strict=False)
     parser.parse('1---f---4-f', strict=False)
     parser.parse('1---f---4--f', strict=False)
     self.assertTrue(True)
 def test_too_few_hyphens_before_barline_strict(self):
     parser = ParserCantusVolpiano()
     test_fn = lambda: parser.parse('1---f-3', strict=True)
     self.assertRaises(HyphenationError, test_fn)
     test_fn = lambda: parser.parse('1---f--3', strict=True)
     self.assertRaises(HyphenationError, test_fn)
     test_fn = lambda: parser.parse('1---f--4', strict=True)
     self.assertRaises(HyphenationError, test_fn)
    def test_missing_pitches_hyphenation_strict(self):
        parser = ParserCantusVolpiano()
        test_fn = lambda: parser.parse('1---f--6------6---f', strict=True)
        self.assertRaises(HyphenationError, test_fn)
        test_fn = lambda: parser.parse('1---f---6------6--f', strict=True)
        self.assertRaises(HyphenationError, test_fn)

        test_fn = lambda: parser.parse('1---f---76------677--f', strict=True)
        self.assertRaises(HyphenationError, test_fn)
 def test_volpiano(self):
     parser = ParserCantusVolpiano(root='volpiano')
     parse = parser.parse('1---fgf-ef--fg-h---f-g')
     word0, bound1, word1, bound2, word2, EOF = parse
     self.assertEqual(word0.rule_name, 'word')
     self.assertEqual(bound1.rule_name, 'word_boundary')
     self.assertEqual(word1.rule_name, 'word')
     self.assertEqual(bound2.rule_name, 'word_boundary')
     self.assertEqual(word2.rule_name, 'word')
     self.assertEqual(EOF.rule_name, 'EOF')
 def test_syllables(self):
     parser = ParserCantusVolpiano(root='syllable')
     parse = parser.parser.parse('fgf-ef')
     self.assertEqual(len(parse), 3)
     self.assertEqual(parse[0].rule_name, 'neume')
     self.assertEqual(parse[1].rule_name, 'neume_boundary')
     self.assertEqual(parse[2].rule_name, 'neume')
Exemple #6
0
    def test_naturals(self):
        parser = ParserCantusVolpiano(root='alteration')
        parse = parser.parser.parse('I')
        alteration = visitParseTree(parse, VisitorCantusVolpiano())
        self.assertIsInstance(alteration, chant.Alteration)
        self.assertIsInstance(alteration, chant.Natural)
        self.assertEqual(alteration.editorial.volpiano, 'I')
        self.assertEqual(alteration.editorial.volpianoPosition, 'j')

        # High e flat
        parse = parser.parser.parse('X')
        alteration = visitParseTree(parse, VisitorCantusVolpiano())
        self.assertIsInstance(alteration, chant.Natural)
        self.assertEqual(alteration.editorial.volpianoPosition, 'm')

        # Low e flat
        parse = parser.parser.parse('W')
        alteration = visitParseTree(parse, VisitorCantusVolpiano())
        self.assertIsInstance(alteration, chant.Natural)
        self.assertEqual(alteration.editorial.volpianoPosition, 'e')

        # Low b flat
        parse = parser.parser.parse('Y')
        alteration = visitParseTree(parse, VisitorCantusVolpiano())
        self.assertIsInstance(alteration, chant.Natural)
        self.assertEqual(alteration.editorial.volpianoPosition, 'b')

        # High b flat
        parse = parser.parser.parse('Z')
        alteration = visitParseTree(parse, VisitorCantusVolpiano())
        self.assertIsInstance(alteration, chant.Natural)
        self.assertEqual(alteration.editorial.volpianoPosition, 'q')
Exemple #7
0
 def test_syllable(self):
     parser = ParserCantusVolpiano(root='syllable')
     parse = parser.parser.parse('fg-h-g')
     syll = visitParseTree(parse, VisitorCantusVolpiano())
     self.assertIsInstance(syll, chant.Syllable)
     self.assertEqual(len(syll), 3)
     self.assertIsInstance(syll[0], chant.Neume)
Exemple #8
0
 def test_f_clef(self):
     # TODO not really supported yet
     parser = ParserCantusVolpiano(root='clef')
     parse = parser.parser.parse('2')
     clef = visitParseTree(parse, VisitorCantusVolpiano())
     self.assertIsInstance(clef, chant.Clef)
     self.assertEqual(clef.editorial.volpiano, '2')
Exemple #9
0
 def test_word(self):
     parser = ParserCantusVolpiano(root='word')
     parse = parser.parser.parse('fg-h--f--g')
     word = visitParseTree(parse, VisitorCantusVolpiano())
     self.assertIsInstance(word, chant.Word)
     self.assertEqual(len(word), 3)
     self.assertIsInstance(word[0], chant.Syllable)
Exemple #10
0
    def test_flats(self):
        parser = ParserCantusVolpiano(root='alteration')
        parse = parser.parser.parse('i')
        alteration = visitParseTree(parse, VisitorCantusVolpiano())
        self.assertIsInstance(alteration, chant.Alteration)
        self.assertIsInstance(alteration, chant.Flat)
        self.assertEqual(alteration.editorial.volpiano, 'i')
        self.assertEqual(alteration.editorial.volpianoPosition, 'j')

        # High e flat
        parse = parser.parser.parse('x')
        alteration = visitParseTree(parse, VisitorCantusVolpiano())
        self.assertIsInstance(alteration, chant.Flat)
        self.assertEqual(alteration.editorial.volpianoPosition, 'm')

        # Low e flat
        parse = parser.parser.parse('w')
        alteration = visitParseTree(parse, VisitorCantusVolpiano())
        self.assertIsInstance(alteration, chant.Flat)
        self.assertEqual(alteration.editorial.volpianoPosition, 'e')

        # Low b flat
        parse = parser.parser.parse('y')
        alteration = visitParseTree(parse, VisitorCantusVolpiano())
        self.assertIsInstance(alteration, chant.Flat)
        self.assertEqual(alteration.editorial.volpianoPosition, 'b')

        # High b flat
        parse = parser.parser.parse('z')
        alteration = visitParseTree(parse, VisitorCantusVolpiano())
        self.assertIsInstance(alteration, chant.Flat)
        self.assertEqual(alteration.editorial.volpianoPosition, 'q')
 def test_words(self):
     parser = ParserCantusVolpiano(root='word')
     parse = parser.parser.parse('fgf-ef--fg-h')
     self.assertEqual(len(parse), 3)
     self.assertEqual(parse[0].rule_name, 'syllable')
     self.assertEqual(parse[1].rule_name, 'syllable_boundary')
     self.assertEqual(parse[2].rule_name, 'syllable')
Exemple #12
0
 def test_neume(self):
     parser = ParserCantusVolpiano(root='neume')
     parse = parser.parser.parse('fg')
     neume = visitParseTree(parse, VisitorCantusVolpiano())
     self.assertIsInstance(neume, chant.Neume)
     self.assertEqual(len(neume), 2)
     self.assertIsInstance(neume[0], chant.Note)
Exemple #13
0
 def test_parse_volpiano_examples(self):
     """Test whether the volpiano of all Cantus examples can be parsed"""
     examples = pd.read_csv('chant21/examples/cantus-volpiano-examples.csv',
                            index_col=0)
     for idx, data in examples.iterrows():
         parser = ParserCantusVolpiano()
         parse = parser.parser.parse(data['volpiano'])
         self.assertTrue(True)
Exemple #14
0
 def test_liquescent(self):
     parser = ParserCantusVolpiano(root='liquescent')
     parse = parser.parser.parse('F')
     note = visitParseTree(parse, VisitorCantusVolpiano())
     self.assertIsInstance(note, chant.Note)
     self.assertEqual(note.editorial.volpianoPosition, 'f')
     self.assertEqual(note.editorial.liquescence, True)
     self.assertEqual(note.notehead, 'x')
 def test_missing_pitches(self):
     """Are missing pitches correctly parsed?"""
     parser = ParserCantusVolpiano(root='volpiano')
     parse = parser.parser.parse('1---6------6')
     _, _, word, EOF = parse
     self.assertEqual(word.rule_name, 'word')
     self.assertEqual(word[0].rule_name, 'syllable')
     self.assertEqual(word[0][0].rule_name, 'missing_pitches')
 def test_missing_pitches_with_break(self):
     """Test whether missing pitches directly followed by a break
     are correctly parsed"""
     parser = ParserCantusVolpiano(root='volpiano')
     parse = parser.parser.parse('1---6------677')
     _, _, word, eof = parse
     missing = word[0][0]
     self.assertEqual(missing.rule_name, 'missing_pitches')
     self.assertEqual(missing[0].value, '6------6')
     self.assertEqual(missing[1].rule_name, 'break')
Exemple #17
0
 def test_volpiano(self):
     """Test the basic structure of a chant: division in sections, words
     and syllables"""
     parser = ParserCantusVolpiano(root='volpiano')
     parse = parser.parser.parse('1---fg-h--f--g---f')
     ch = visitParseTree(parse, VisitorCantusVolpiano())
     self.assertIsInstance(ch, chant.Chant)
     self.assertIsInstance(ch[0], chant.Section)
     (word1, word2, word3), = ch
     self.assertIsInstance(word1, chant.Word)
     self.assertIsInstance(word1[0], chant.Syllable)
     self.assertIsInstance(word1[0][0], chant.Clef)
    def test_other(self):
        parser = ParserCantusVolpiano(root='syllable')
        parse = parser.parser.parse('3')
        self.assertEqual(len(parse), 1)
        self.assertEqual(parse[0].rule_name, 'section_end')

        parse = parser.parser.parse('4')
        self.assertEqual(len(parse), 1)
        self.assertEqual(parse[0].rule_name, 'chant_end')

        parse = parser.parser.parse('6------6')
        self.assertEqual(len(parse), 1)
        self.assertEqual(parse[0].rule_name, 'missing_pitches')
    def test_4_5_hyphens_strict(self):
        parser = ParserCantusVolpiano()
        test_fn = lambda: parser.parse('1---f----f', strict=True)
        self.assertRaises(HyphenationError, test_fn)

        parser = ParserCantusVolpiano()
        test_fn = lambda: parser.parse('1---f-----f', strict=True)
        self.assertRaises(HyphenationError, test_fn)
 def test_double_3_strict(self):
     parser = ParserCantusVolpiano()
     test_fn = lambda: parser.parse('1---f---33---g', strict=True)
     self.assertRaises(BarlineError, test_fn)
Exemple #21
0
 def test_page_break(self):
     parser = ParserCantusVolpiano(root='break')
     parse = parser.parser.parse('77')
     brk = visitParseTree(parse, VisitorCantusVolpiano())
     self.assertIsInstance(brk, chant.PageBreak)
 def test_double_3_not_strict(self):
     parser = ParserCantusVolpiano()
     parse = parser.parse('1---f---33---g', strict=False)
     self.assertTrue(True)
Exemple #23
0
 def test_g_clef(self):
     parser = ParserCantusVolpiano(root='clef')
     parse = parser.parser.parse('1')
     clef = visitParseTree(parse, VisitorCantusVolpiano())
     self.assertIsInstance(clef, chant.Clef)
     self.assertEqual(clef.editorial.volpiano, '1')
 def test_thick_barline_strict(self):
     parser = ParserCantusVolpiano()
     test_fn = lambda: parser.parse('1---f---5', strict=True)
     self.assertRaises(BarlineError, test_fn)
 def test_thick_barline_not_strict(self):
     parser = ParserCantusVolpiano()
     parse = parser.parse('1---f---5', strict=False)
     self.assertTrue(True)
 def test_missing_clef(self):
     parser = ParserCantusVolpiano()
     test_fn = lambda: parser.parse('f---f')
     self.assertRaises(ClefError, test_fn)
Exemple #27
0
 def test_note(self):
     parser = ParserCantusVolpiano(root='note')
     parse = parser.parser.parse('f')
     note = visitParseTree(parse, VisitorCantusVolpiano())
     self.assertIsInstance(note, chant.Note)
     self.assertEqual(note.editorial.volpianoPosition, 'f')
Exemple #28
0
 def test_section_end(self):
     parser = ParserCantusVolpiano(root='section_end')
     parse = parser.parser.parse('3')
     bar = visitParseTree(parse, VisitorCantusVolpiano())
     self.assertIsInstance(bar, chant.PausaMajor)
Exemple #29
0
 def test_examples(self):
     volpiano = '1---gK--k---h--kl--k--g--g---g--j--kl--l---k---n7--l--m---kj--gh---kH--k--h--g--fg--g---g--hhhk---k---k--kj--gh--h---j--kl--lkJ--hg--g---g--h--jk---lm--ml--l--l---l-lkj--g---h--k--k---4'
     parser = ParserCantusVolpiano()
     parse = parser.parser.parse(volpiano)
     chant = visitParseTree(parse, VisitorCantusVolpiano())
     print(chant)
Exemple #30
0
 def test_chant_end(self):
     parser = ParserCantusVolpiano(root='chant_end')
     parse = parser.parser.parse('4')
     bar = visitParseTree(parse, VisitorCantusVolpiano())
     self.assertIsInstance(bar, chant.PausaFinalis)