import unittest
import numpy as np

try:
    import onnxmltools
    import onnxmltools.convert.lightgbm as xmlt
except ImportError:
    onnxmltools = None

try:
    import lightgbm
except ImportError:
    lightgbm = None

from onnxconverter_common.data_types import FloatTensorType


class OnnxmltoolsTestCase(unittest.TestCase):

    @unittest.skipIf(onnxmltools is None or lightgbm is None,
                     reason="missing dependencies")
    def test_lightgbm(self):
        X = [[0, 1], [1, 1], [2, 0], [1, 2]]
        X = np.array(X, dtype=np.float32)
        y = [0, 1, 0, 1]
        model = lightgbm.LGBMClassifier(n_estimators=3, min_child_samples=1)
        model.fit(X, y)
        onx = xmlt.convert(
            model, 'dummy', initial_types=[('X', FloatTensorType([None, X.shape[1]]))],
            target_opset=9)
        assert "ir_version: 4" in str(onx).lower()


if __name__ == '__main__':
    unittest.main()