def test_feature(self):
        # test using classes and the base class

        A = DataFrame({'col': ['abc', 'abc', 'abc', 'abc', 'abc']})
        B = DataFrame({'col': ['abc', 'abd', 'abc', 'abc', '123']})
        ix = MultiIndex.from_arrays([A.index.values, B.index.values])

        feature = BaseCompareFeature('col', 'col')
        feature._f_compare_vectorized = lambda s1, s2: np.ones(len(s1))
        feature.compute(ix, A, B)
    def test_feature_multicolumn_input(self):
        # test using classes and the base class

        A = DataFrame({
            'col1': ['abc', 'abc', 'abc', 'abc', 'abc'],
            'col2': ['abc', 'abc', 'abc', 'abc', 'abc']
        })
        B = DataFrame({
            'col1': ['abc', 'abd', 'abc', 'abc', '123'],
            'col2': ['abc', 'abd', 'abc', 'abc', '123']
        })
        ix = MultiIndex.from_arrays([A.index.values, B.index.values])

        feature = BaseCompareFeature(['col1', 'col2'], ['col1', 'col2'])
        feature._f_compare_vectorized = \
            lambda s1_1, s1_2, s2_1, s2_2: np.ones(len(s1_1))
        feature.compute(ix, A, B)
    def test_feature_multicolumn_return(self):
        # test using classes and the base class

        A = DataFrame({'col': ['abc', 'abc', 'abc', 'abc', 'abc']})
        B = DataFrame({'col': ['abc', 'abd', 'abc', 'abc', '123']})
        ix = MultiIndex.from_arrays([A.index.values, B.index.values])

        def ones(s1, s2):
            return DataFrame(np.ones((len(s1), 3)))

        feature = BaseCompareFeature('col', 'col')
        feature._f_compare_vectorized = ones
        result = feature.compute(ix, A, B)

        self.assertTrue(result.shape[0], 3)