def testDontMixPacks(self):
     packs = [
         MediaPack("Foo", {
             "ni3.mp3": "ni3.mp3",
             "ma3.mp3": "ma3.mp3"
         }),
         MediaPack("Bar", {"hao3.mp3": "hao3.mp3"})
     ]
     self.assertHasPartialReading(u"你好马", ["ni3.mp3", "ma3.mp3"],
                                  bestpackshouldbe=packs[0],
                                  mediapacks=packs)
    def testRandomizeBestPackOnTie(self):
        pack1 = MediaPack("Foo", {"ni3.mp3": "PACK1.mp3"})
        pack2 = MediaPack("Bar", {"ni3.mp3": "PACK2.mp3"})

        gotpacks = []
        for n in range(1, 10):
            gotpack, _, _ = PinyinAudioReadings([pack1, pack2],
                                                [".mp3", ".ogg"]).audioreading(
                                                    englishdict.reading(u"你"))
            gotpacks.append(gotpack)

        # This test will nondeterministically fail (1/2)^10 = 0.01% of the time
        self.assertTrue(pack1 in gotpacks)
        self.assertTrue(pack2 in gotpacks)
 def expandmediapacks(self,
                      mediapacks=None,
                      available_media=None,
                      raw_available_media=default_raw_available_media,
                      bestpackshouldbe=None):
     if mediapacks:
         return bestpackshouldbe, mediapacks
     elif available_media:
         pack = MediaPack("Test", available_media)
         return pack, [pack]
     else:
         pack = MediaPack(
             "Test",
             dict([(filename, filename)
                   for filename in raw_available_media]))
         return pack, [pack]
 def testUseBestPack(self):
     packs = [
         MediaPack("Foo", {
             "xiao3.mp3": "xiao3.mp3",
             "ma3.mp3": "ma3.mp3"
         }),
         MediaPack(
             "Bar", {
                 "ma3.mp3": "ma3.mp3",
                 "ci2.mp3": "ci2.mp3",
                 "dian3.mp3": "dian3.mp3"
             })
     ]
     self.assertHasPartialReading(u"小马词典",
                                  ["ma3.mp3", "ci2.mp3", "dian3.mp3"],
                                  bestpackshouldbe=packs[1],
                                  mediapacks=packs)
 def testUseSpokenToneRatherThanWrittenOne(self):
     mediapacks = [
         MediaPack("Foo", {
             "ma2.mp3": "ma2.mp3",
             "ma3.mp3": "ma3.mp3"
         })
     ]
     mediapack, output, mediamissingcount = PinyinAudioReadings(
         mediapacks, [".mp3"]).audioreadings(
             [Word(Pinyin("ma", ToneInfo(written=2, spoken=3)))])[0]
     self.assertEquals(mediapack, mediapacks[0])
     self.assertEquals(mediamissingcount, 0)
     self.assertEquals(output, ["ma3.mp3"])