def test_histogram():
        'It test our histogram implementation'
        numbers = [0, 1, 2, 3, 4, 4, 4, 5, 6, 7, 8, 9, 10]
        bins    = 5
        numpy_distrib = ([2, 2, 4, 2, 3], [0, 2, 4, 6, 8, 10])
        our_distrib = histogram(numbers, bins=bins)
        for num1, num2 in zip(numpy_distrib[0], our_distrib[0]):
            assert num1 == num2
        for num1, num2 in zip(numpy_distrib[1], our_distrib[1]):
            assert num1 == num2
            assert isinstance(num2, int)

        #with floats
        numbers = [0.0, 1, 2, 3, 4, 4, 4, 5, 6, 7, 8, 9, 10]
        bins    = 5
        numpy_distrib = ([2, 2, 4, 2, 3], [0.0, 2.0, 4.0, 6.0, 8.0, 10.0])
        our_distrib = histogram(numbers, bins=bins)

        for num1, num2 in zip(numpy_distrib[0], our_distrib[0]):
            assert num1 == num2
        for num1, num2 in zip(numpy_distrib[1], our_distrib[1]):
            assert num1 == num2
            assert isinstance(num2, float)

        #now we draw the histogram
        #draw_histogram(our_distrib[0], our_distrib[1])
        png_file = tempfile.NamedTemporaryFile(suffix='.png')
        #draw_histogram(our_distrib[0], our_distrib[1], fhand=png_file)
        #assert 'PNG' in open(png_file.name).read(4)
        svg_file = tempfile.NamedTemporaryFile(suffix='.svg')
        draw_histogram(our_distrib[0], our_distrib[1], fhand=svg_file)
        svg_file.flush()
        assert 'xml' in open(svg_file.name).read(5).lower()
 def test_remove_outliers():
     'It tests the histogram removing the outliers'
     numbers = [random.gauss(5, 1) for index in range(100)]
     numbers.append(5000)
     bins = 10
     distrib = histogram(numbers, bins=bins, remove_outliers=True)
     assert int(distrib[1][-1]) < 20