Source code for exa.math.misc.test.test_summation

# -*- coding: utf-8 -*-
# Copyright (c) 2015-2016, Exa Analytics Development Team
# Distributed under the terms of the Apache License 2.0
'''
Tests for :mod:`~exa.math.misc.summation`
############################################
'''
import string
import random
import numpy as np
from exa.test import UnitTester
from exa.math.misc.summation import sum_product_pair, sum_product_pair_f8


[docs]class TestSumProductPair(UnitTester): ''' Tests for all functions name **sum_product_pair\*** '''
[docs] def setUp(self): ''' Generate a couple of attributes for testing. ''' self.s0 = [random.choice(string.ascii_letters) for i in range(500)] self.s1 = [random.choice(string.ascii_letters) for i in range(100)] self.n0 = np.random.randint(0, 100, size=(500, )) self.n1 = np.random.randint(0, 100, size=(100, )) self.f0 = np.random.rand(500) self.f1 = np.random.rand(100)
[docs] def test_sum_product_pair(self): ''' Test :func:`~exa.math.misc.summation.sum_product_pair`. This function should work regardless of types. ''' r = sum_product_pair(self.s0, self.s0) self.assertIsInstance(r, list) self.assertEqual(len(r), 250000) r = sum_product_pair(self.s0, self.s1) self.assertEqual(len(r), 50000) self.assertTrue(all(isinstance(rr, str) for rr in r)) r = sum_product_pair(self.n0, self.n0) self.assertIsInstance(r, list) self.assertEqual(len(r), 250000) r = sum_product_pair(self.n0, self.n1) self.assertEqual(len(r), 50000) self.assertTrue(all(isinstance(rr, (np.int32, np.int64)) for rr in r)) r = sum_product_pair(self.f0, self.f0) self.assertEqual(len(r), 250000) self.assertTrue(all(isinstance(rr, (np.float32, np.float64)) for rr in r))
[docs] def test_sum_product_pair_f8(self): ''' Test :func:`~exa.math.misc.summation.sum_product_pair_f8`. This function only works on 64-bit floating point numbers. ''' with self.assertRaises(Exception) as ex: sum_product_pair_f8(self.s0, self.s1) exnb = 'Failed at nopython' exnp = 'could not convert string to float' ex = str(ex.exception) self.assertTrue(exnb in ex or exnp in ex) r = sum_product_pair_f8(self.f0, self.f0) self.assertEqual(len(r), 250000) self.assertTrue(all(isinstance(rr, np.float64) for rr in r)) r = sum_product_pair_f8(self.f0, self.f1) self.assertEqual(len(r), 50000) self.assertTrue(all(isinstance(rr, np.float64) for rr in r))