def test_namespace(self):
    space1 = {'X': np.arange(50), 'Y': (np.arange(50) * 2)}
    space2 = {'X': np.arange(20), 'Y': (np.arange(20) * 2)}
    space3 = {'X': np.arange(30), 'Y': (np.arange(30) * 2)}
    X = formula.Term('X')
    Y = formula.Term('Y')
    X.namespace = space1
    assert_almost_equal(X(), np.arange(50))
    Y.namespace = space2
    assert_almost_equal(Y(), (np.arange(20) * 2))
    f = (X + Y)
    f.namespace = space1
    assert_equal(f().shape, (2, 50))
    assert_almost_equal(Y(), (np.arange(20) * 2))
    assert_almost_equal(X(), np.arange(50))
    f.namespace = space2
    assert_equal(f().shape, (2, 20))
    assert_almost_equal(Y(), (np.arange(20) * 2))
    assert_almost_equal(X(), np.arange(50))
    f.namespace = space3
    assert_equal(f().shape, (2, 30))
    assert_almost_equal(Y(), (np.arange(20) * 2))
    assert_almost_equal(X(), np.arange(50))
    xx = (X ** 2)
    assert_equal(xx().shape, (50,))
    xx.namespace = space3
    assert_equal(xx().shape, (30,))
    xx = (X * formula.I)
    assert_equal(xx().shape, (50,))
    xx.namespace = space3
    assert_equal(xx().shape, (30,))
    xx = (X * X)
    assert_equal(xx.namespace, X.namespace)
    xx = (X + Y)
    assert_equal(xx.namespace, {})
    Y.namespace = {'X': np.arange(50), 'Y': (np.arange(50) * 2)}
    xx = (X + Y)
    assert_equal(xx.namespace, {})
    Y.namespace = X.namespace
    xx = (X + Y)
    assert_equal(xx.namespace, Y.namespace)
def test_namespace(self):
    space1 = {'X': np.arange(50), 'Y': (np.arange(50) * 2)}
    space2 = {'X': np.arange(20), 'Y': (np.arange(20) * 2)}
    space3 = {'X': np.arange(30), 'Y': (np.arange(30) * 2)}
    X = formula.Term('X')
    Y = formula.Term('Y')
    X.namespace = space1
    assert_almost_equal(X(), np.arange(50))
    Y.namespace = space2
    assert_almost_equal(Y(), (np.arange(20) * 2))
    f = (X + Y)
    f.namespace = space1
    assert_equal(f().shape, (2, 50))
    assert_almost_equal(Y(), (np.arange(20) * 2))
    assert_almost_equal(X(), np.arange(50))
    f.namespace = space2
    assert_equal(f().shape, (2, 20))
    assert_almost_equal(Y(), (np.arange(20) * 2))
    assert_almost_equal(X(), np.arange(50))
    f.namespace = space3
    assert_equal(f().shape, (2, 30))
    assert_almost_equal(Y(), (np.arange(20) * 2))
    assert_almost_equal(X(), np.arange(50))
    xx = (X ** 2)
    assert_equal(xx().shape, (50,))
    xx.namespace = space3
    assert_equal(xx().shape, (30,))
    xx = (X * formula.I)
    assert_equal(xx().shape, (50,))
    xx.namespace = space3
    assert_equal(xx().shape, (30,))
    xx = (X * X)
    assert_equal(xx.namespace, X.namespace)
    xx = (X + Y)
    assert_equal(xx.namespace, {})
    Y.namespace = {'X': np.arange(50), 'Y': (np.arange(50) * 2)}
    xx = (X + Y)
    assert_equal(xx.namespace, {})
    Y.namespace = X.namespace
    xx = (X + Y)
    assert_equal(xx.namespace, Y.namespace)