import converter

def test():
    for cmd, expected_response in sample_conversation():
        message = {'content': cmd, 'subject': 'foo',
                   'display_recipient': 'bar'}

        class ClientDummy(object):
            def __init__(self):
                self.output = ''

            def send_message(self, params):
                self.output = params['content']
        handler = converter.ConverterHandler()
        client_dummy = ClientDummy()
        handler.handle_message(message, client_dummy, '')
        if client_dummy.output != expected_response:
            raise AssertionError('''
                cmd: %s
                expected: %s
                but got : %s
                ''' % (cmd, expected_response, client_dummy.output))

def sample_conversation():
    return [
        ('@convert 2 m cm', '2.0 m = 200.0 cm\n'),
        ('@converter 2 m cm', ''),
        ('@convert 12 celsius fahrenheit',
         '12.0 celsius = 53.600054 fahrenheit\n'),
        ('@convert 0.002 kilometer millimile',
         '0.002 kilometer = 1.2427424 millimile\n'),
        ('@convert 3 megabyte kilobit',
         '3.0 megabyte = 24576.0 kilobit\n'),
        (('foo @convert 120.5 g lb bar baz.\n'
          'baz bar bar @convert 22 k c lorem ipsum dolor'),
         ('1. conversion: 120.5 g = 0.26565703 lb\n'
          '2. conversion: 22.0 k = -251.15 c\n')),
        ('@convert foo bar',
         ('Too few arguments given. Enter `@convert help` '
          'for help on using the converter.\n')),
    ]

if __name__ == '__main__':
    test()