def Get(cls, name: str): if not (isinstance(name, str)): raise TypeError('引数nameはstr型にしてください。') if isinstance(name, int): return cls.__GetDegree(name) k, a = cls.__Split(name) key = cls.__GetKeyHalfToneNum(k) accidental = Accidental.Get(a) return key + accidental
def test_Get(self): for count in range(1, 4): for name, interval in Accidental.Accidentals.items(): if not name: continue with self.subTest(accidenta=name, count=count): self.assertEqual(Accidental.Get(name * count), interval * count)
def Get(cls, name): if isinstance(name, int): return cls.__GetDegree(name) if not (isinstance(name, str)): raise TypeError('引数nameはstr型かint型にしてください。') d, a = cls.__Split(name) degree = cls.__GetDegree(int(d)) accidental = Accidental.Get(a) return degree + accidental
def test_GetName_it(self): self.assertEqual('diesis', Accidental.GetName('#', 'it')) self.assertEqual('doppio diesis', Accidental.GetName('##', 'it')) self.assertEqual('diesis*3', Accidental.GetName('###', 'it')) self.assertEqual('bemolle', Accidental.GetName('b', 'it')) self.assertEqual('doppio bemolle', Accidental.GetName('bb', 'it')) self.assertEqual('bemolle*3', Accidental.GetName('bbb', 'it'))
def test_GetName_fr(self): self.assertEqual('dièse', Accidental.GetName('#', 'fr')) self.assertEqual('double dièse', Accidental.GetName('##', 'fr')) self.assertEqual('dièse*3', Accidental.GetName('###', 'fr')) self.assertEqual('bémol', Accidental.GetName('b', 'fr')) self.assertEqual('double bémol', Accidental.GetName('bb', 'fr')) self.assertEqual('bémol*3', Accidental.GetName('bbb', 'fr'))
def test_GetName_de(self): self.assertEqual('is', Accidental.GetName('#', 'de')) self.assertEqual('isis', Accidental.GetName('##', 'de')) self.assertEqual('is*3', Accidental.GetName('###', 'de')) self.assertEqual('es', Accidental.GetName('b', 'de')) self.assertEqual('eses', Accidental.GetName('bb', 'de')) self.assertEqual('es*3', Accidental.GetName('bbb', 'de'))
def test_GetName_ja(self): self.assertEqual('嬰', Accidental.GetName('#', 'ja')) self.assertEqual('重嬰', Accidental.GetName('##', 'ja')) self.assertEqual('嬰*3', Accidental.GetName('###', 'ja')) self.assertEqual('変', Accidental.GetName('b', 'ja')) self.assertEqual('重変', Accidental.GetName('bb', 'ja')) self.assertEqual('変*3', Accidental.GetName('bbb', 'ja'))
def test_GetName_en(self): self.assertEqual('sharp', Accidental.GetName('#', 'en')) self.assertEqual('double sharp', Accidental.GetName('##', 'en')) self.assertEqual('sharp*3', Accidental.GetName('###', 'en')) self.assertEqual('flat', Accidental.GetName('b', 'en')) self.assertEqual('double flat', Accidental.GetName('bb', 'en')) self.assertEqual('flat*3', Accidental.GetName('bbb', 'en'))
def test_GetName_zh(self): self.assertEqual('升', Accidental.GetName('#', 'zh')) self.assertEqual('重升', Accidental.GetName('##', 'zh')) self.assertEqual('升*3', Accidental.GetName('###', 'zh')) self.assertEqual('降', Accidental.GetName('b', 'zh')) self.assertEqual('重降', Accidental.GetName('bb', 'zh')) self.assertEqual('降*3', Accidental.GetName('bbb', 'zh'))
def test_GetName_es(self): self.assertEqual('sostenido', Accidental.GetName('#', 'es')) self.assertEqual('sostenido doble', Accidental.GetName('##', 'es')) self.assertEqual('sostenido*3', Accidental.GetName('###', 'es')) self.assertEqual('bemol', Accidental.GetName('b', 'es')) self.assertEqual('bemol doble', Accidental.GetName('bb', 'es')) self.assertEqual('bemol*3', Accidental.GetName('bbb', 'es'))
def GetName(cls, name, lang): if not (isinstance(name, str)): raise TypeError('引数nameはstr型にしてください。') if not (isinstance(lang, str)): raise TypeError('引数langはstr型にしてください。') if lang not in cls.KeyNames.keys(): raise ValueError( f'langは次のうちのいずれかにしてください。{cls.KeyNames.keys()}。: lang={lang}') k, a = cls.__Split(name) if k not in cls.Keys: raise ValueError(f'keyは次のうちのいずれかにしてください。{cls.Keys}。: key={k}') key = cls.__GetNameLangs(k, lang) accidental = Accidental.GetName(a, lang) if 'ja' == lang or 'zh' == lang: return accidental + key else: if 0 == len(accidental): return key else: return key + ' ' + accidental
def test_Get_Valid_NotSameChars(self): with self.assertRaises(ValueError) as e: Accidental.Get('+-') self.assertIn('引数accidentalは同じ文字のみ連続使用を許されます。異なる文字を混在させることはできません。', str(e.exception))
def test_Get_Invalid(self): with self.assertRaises(ValueError) as e: Accidental.Get('無無無') self.assertIn('引数accidentalに使える文字は次のものだけです。', str(e.exception))
def test_Get_int(self): with self.assertRaises(TypeError) as e: Accidental.Get(100) self.assertIn('引数accidentalは文字列型にしてください。', str(e.exception))
def test_Get_Blank(self): self.assertEqual(Accidental.Get(''), 0)
def test_Get_None(self): self.assertEqual(Accidental.Get(None), 0)