# Copyright (c) Huawei Technologies Co., Ltd. 2025-2026. All rights reserved.

# MindIE is licensed under Mulan PSL v2.

# You can use this software according to the terms and conditions of the Mulan PSL v2.

# You may obtain a copy of Mulan PSL v2 at:

#          http://license.coscl.org.cn/MulanPSL2

# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,

# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,

# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.

# See the Mulan PSL v2 for more details.



import unittest

from ddt import ddt, data, unpack



from mindie_llm.runtime.config.lora_config import LoraConfig





@ddt

class TestLoraConfig(unittest.TestCase):

    def setUp(self):

        self.lora_config = LoraConfig.from_dict({})



    @data(

        ('r', 0),

        ('lora_alpha', 0),

        ('rank_pattern', '42'),

        ('rank_pattern', {'1': 0}),

        ('alpha_pattern', {'1': 0}),

        ('target_modules', ['lm_head'])

        )

    @unpack

    def test_validate_fail(self, key, value):

        setattr(self.lora_config, key, value)

        with self.assertRaises(ValueError) as _:

            self.lora_config._validate()





if __name__ == '__main__':

    unittest.main()