# -*- coding: UTF-8 -*-
#
# Tencent is pleased to support the open source community by making QTA available.
# Copyright (C) 2016THL A29 Limited, a Tencent company. All rights reserved.
# Licensed under the BSD 3-Clause License (the "License"); you may not use this 
# file except in compliance with the License. You may obtain a copy of the License at
# 
# https://opensource.org/licenses/BSD-3-Clause
# 
# Unless required by applicable law or agreed to in writing, software distributed 
# under the License is distributed on an "AS IS" basis, WITHOUT WARRANTIES OR CONDITIONS
# OF ANY KIND, either express or implied. See the License for the specific language
# governing permissions and limitations under the License.
#

'''management模块单元测试
'''

import logging
import os
import unittest
import sys

from qt4a.management import qt4a_repack_apk


class TestManagement(unittest.TestCase):
    '''
    '''

    def _check_jdk_env(self):
        sep = ';' if sys.platform == 'win32' else ':'

        paths = os.environ['PATH'].split(sep)
        for path in paths:
            jarsigner_path = os.path.join(path, 'jarsigner.exe' if sys.platform == 'win32' else 'jarsigner')
            if os.path.exists(jarsigner_path):
                return True
        return False

    def test_repack(self):
        if not self._check_jdk_env():
            logging.warn('Check JDK environment failed')
            return
        apk_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'qt4a', 'androiddriver', 'tools', 'QT4AHelper.apk')
        outpath = qt4a_repack_apk(apk_path)
        self.assertTrue(os.path.exists(outpath))

    def test_repack_low_memory(self):
        if not self._check_jdk_env():
            logging.warn('Check JDK environment failed')
            return
        apk_path = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'qt4a', 'androiddriver', 'tools', 'QT4AHelper.apk')
        outpath = qt4a_repack_apk(apk_path, max_heap_size=1)
        self.assertTrue(os.path.exists(outpath))


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


