def test_logical_and_operations(self): a = PCGroup.from_names('C E G B') b = PCGroup.from_names('D F G') aandb = a & b aorb = a | b axorb = a ^ b ainv = ~aorb self.assertEqual(aandb, PCGroup.from_names('G')) self.assertEqual(aorb, PCGroup.from_names('C D E F G B')) self.assertEqual(axorb, PCGroup.from_names('C D E F B')) self.assertEqual(ainv, PCGroup.from_names('C# D# F# G# A A#'))
def test_define_from_midi_notevals(self): # Todo: test from list, numpy and MidiTable a = PCGroup.from_midi([60, 62, 64, 65, 67, 69, 71]) b = PCGroup.from_names('C D E F G A B') self.assertEqual(a, b)
def test_define_using_notenames(self): a = PCGroup.from_names('C D E F# G A B') self.assertEqual(a.notes, [0, 2, 4, 6, 7, 9, 11])
def test_set_behaviour(self): a = PCGroup.from_names('C5 E G C4 C6')
def test_intervals(self): a = PCGroup.from_names('G A B C D E F#') self.assertEqual(a.intervals(), [0, 2, 4, 5, 7, 9, 11]) # self.assertEqual(str(a), 'G A B C D E F#') self.assertEqual(a.intervals(PC('C#')), [6, 8, 10, 11, 1, 3, 5])
def test_get_by_slicing(self): a = PCGroup.from_names('C D E F') b = a[1:7] self.assertEqual(a.midis, [60, 62, 64, 65]) self.assertEqual(b.midis, [62, 64, 65, 72, 74, 76])
def test_iteration(self): a = PCGroup.from_names('C E G') notes = [PC('C'), PC('E'), PC('G')] [self.assertEqual(note, target) for note, target in zip(a, notes)]