def METHOD_NAME(self):
    x = X(2)
    y = X(3)
    # singelton x singleton
    self.assertEqual(x.binop(y, lambda x, y: x * y), [6])
    self.assertEqual(x.binop(y, lambda x, y: x * y, list1=False), 6)
    y = X.Alloc(5)
    for i in range(0, 5):
        y[i] = X(i + 1)
    # singelton x non-singleton
    self.assertEqual(x.binop(y, lambda x, y: x * y), [2, 4, 6, 8, 10])
    self.assertEqual(x.binop(y, lambda x, y: x * y, list1=False), [2, 4, 6, 8, 10])
    # non-singelton x singleton
    self.assertEqual(y.binop(x, lambda x, y: x * y), [2, 4, 6, 8, 10])
    self.assertEqual(y.binop(x, lambda x, y: x * y, list1=False), [2, 4, 6, 8, 10])
    # non-singelton x non-singleton
    self.assertEqual(y.binop(y, lambda x, y: x * y), [1, 4, 9, 16, 25])
    self.assertEqual(y.binop(y, lambda x, y: x * y, list1=False), [1, 4, 9, 16, 25])