class SubTest(unittest.TestCase):
    def setUp(self):
        self.lista = [['a','b','c'],['me','you','he','her','it']]
        self.BC = BroadCaster(self.lista)
        
    def testSub0(self):
        """fail if you call a method meant for the subelements"""
        self.assertRaises(AttributeError, self.BC.upper().BClist)
        
    def testSub1(self):
        """can emerge it with the appropriate method"""
        self.res = self.BC.BCsub( 'upper' ).BClist()
        self.assertTrue( self.res == [['A','B','C'],['ME','YOU','HE','HER','IT']] )
        
    def testSub2(self):
        self.res = self.BC.BCsub( 'BCmapfilter' ).BClist()
        self.assertTrue( self.res == [['a','b','c'],['me','you','he','her','it']] )
        
    def testSub3(self):
        self.res = self.BC.BCsub( 'BCmapfilter', lambda i:i*2 ).BClist()
        self.assertTrue( self.res == [['aa','bb','cc'],['meme','youyou','hehe','herher','itit']] )
        
    def testSub4(self):
        """can be made in a recursive way"""
        self.BC = BroadCaster([ [['a'],['b']], [['c'],['d']] ])
        self.res = self.BC.BCsub('BCsub', 'BCmapfilter', lambda i:i*2 ).BClist()
        self.assertTrue( self.res == [ [['aa'],['bb']], [['cc'],['dd']] ] )
        
    def testSub5(self):
        self.res = self.BC.BCsub( '__getitem__',0 ).BClist()
        self.assertTrue( self.res == [['a','b','c'],['m','y','h','h','i']] )
class EmergeTest(unittest.TestCase):
    def setUp(self):
        self.lista = 'aiuole'
        self.BC = BroadCaster(self.lista)
        
    def testEmerge1(self):
        self.res = self.BC.upper()
        self.assertTrue( self.res.BClist() == ['A','I','U','O','L','E'] )
    
    def testEmerge2(self):
        self.res = self.BC.__add__('a')
        self.assertTrue( self.res.BClist() == ['aa', 'ia', 'ua', 'oa', 'la', 'ea'] )
        
    def testEmerge3(self):
        self.res = BroadCaster([int,float,complex])(1)
        self.assertTrue( self.res.BClist() == [1, 1.0, (1+0j)] )
    
    def tearDown(self):
        self.assertTrue(isinstance(self.res,BroadCaster))
 def testSub4(self):
     """can be made in a recursive way"""
     self.BC = BroadCaster([ [['a'],['b']], [['c'],['d']] ])
     self.res = self.BC.BCsub('BCsub', 'BCmapfilter', lambda i:i*2 ).BClist()
     self.assertTrue( self.res == [ [['aa'],['bb']], [['cc'],['dd']] ] )
 def setUp(self):
     self.lista = [['a','b','c'],['me','you','he','her','it']]
     self.BC = BroadCaster(self.lista)
 def setUp(self):
     self.lista = 'aiuole'
     self.BC = BroadCaster(self.lista)