1#!/usr/bin/env python3 2# -*- coding: utf-8 -*- 3 4# Copyright (c) 2021-2024 Huawei Device Co., Ltd. 5# Licensed under the Apache License, Version 2.0 (the "License"); 6# you may not use this file except in compliance with the License. 7# You may obtain a copy of the License at 8# 9# http://www.apache.org/licenses/LICENSE-2.0 10# 11# Unless required by applicable law or agreed to in writing, software 12# distributed under the License is distributed on an "AS IS" BASIS, 13# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14# See the License for the specific language governing permissions and 15# limitations under the License. 16 17import os 18import unittest 19from typing import List, Set 20 21from runner.chapters import Chapters 22 23 24class ChapterTest(unittest.TestCase): 25 current_folder = os.path.dirname(__file__) 26 chapters: Chapters 27 base_folder: str 28 files: List[str] 29 30 @classmethod 31 def setUpClass(cls) -> None: 32 cls.base_folder = '' 33 cls.files = [ 34 'folder1/file1.sts', 35 'folder1/file2.sts', 36 'folder1/file3.sts', 37 'folder2/file1.sts', 38 'folder2/file2.sts', 39 'folder2/file3.sts', 40 'folder3/file1.sts', 41 'folder3/file2.sts', 42 'folder3/test2.sts', 43 'folder4/file1.sts', 44 'fol-der 1/fi_le 1.sts', 45 ] 46 cls.chapters = Chapters(os.path.join(cls.current_folder, 'chapters_test.yaml')) 47 48 def test_ch1(self) -> None: 49 actual = ChapterTest.chapters.filter_by_chapter( 50 chapter_name='ch1', 51 base_folder=ChapterTest.base_folder, 52 extension="sts", 53 files=ChapterTest.files 54 ) 55 expected: Set[str] = { 56 'folder1/file1.sts', 57 'folder2/file1.sts', 58 'folder2/file2.sts', 59 'folder2/file3.sts', 60 'folder3/file1.sts', 61 'folder3/file2.sts' 62 } 63 self.assertSetEqual(actual, expected) 64 65 def test_ch2(self) -> None: 66 actual = ChapterTest.chapters.filter_by_chapter( 67 chapter_name='ch2', 68 base_folder=ChapterTest.base_folder, 69 extension="sts", 70 files=ChapterTest.files 71 ) 72 expected: Set[str] = { 73 'folder1/file1.sts', 74 'folder2/file1.sts', 75 'folder2/file2.sts', 76 'folder2/file3.sts', 77 'folder3/file1.sts', 78 'folder3/file2.sts' 79 } 80 self.assertSetEqual(actual, expected) 81 82 def test_ch3(self) -> None: 83 actual = ChapterTest.chapters.filter_by_chapter( 84 chapter_name='ch3', 85 base_folder=ChapterTest.base_folder, 86 extension="sts", 87 files=ChapterTest.files 88 ) 89 expected: Set[str] = { 90 'folder1/file2.sts', 91 'folder1/file3.sts', 92 'folder3/test2.sts', 93 'folder4/file1.sts', 94 'fol-der 1/fi_le 1.sts' 95 } 96 self.assertSetEqual(actual, expected) 97 98 def test_ch4_1(self) -> None: 99 actual = ChapterTest.chapters.filter_by_chapter( 100 chapter_name='ch4_1', 101 base_folder=ChapterTest.base_folder, 102 extension="sts", 103 files=ChapterTest.files 104 ) 105 expected: Set[str] = { 106 'folder1/file1.sts', 107 } 108 self.assertSetEqual(actual, expected) 109 110 def test_ch4(self) -> None: 111 actual = ChapterTest.chapters.filter_by_chapter( 112 chapter_name='ch4', 113 base_folder=ChapterTest.base_folder, 114 extension="sts", 115 files=ChapterTest.files 116 ) 117 expected: Set[str] = { 118 'folder1/file1.sts', 119 'folder1/file2.sts', 120 } 121 self.assertSetEqual(actual, expected) 122 123 def test_ch5(self) -> None: 124 actual = ChapterTest.chapters.filter_by_chapter( 125 chapter_name='ch5', 126 base_folder=ChapterTest.base_folder, 127 extension="sts", 128 files=ChapterTest.files 129 ) 130 expected: Set[str] = { 131 'folder3/file1.sts', 132 'folder3/file2.sts', 133 } 134 self.assertSetEqual(actual, expected) 135 136 def test_ch6(self) -> None: 137 actual = ChapterTest.chapters.filter_by_chapter( 138 chapter_name='ch6', 139 base_folder=ChapterTest.base_folder, 140 extension="sts", 141 files=ChapterTest.files 142 ) 143 expected: Set[str] = { 144 'folder1/file1.sts', 145 'folder1/file2.sts', 146 'folder1/file3.sts', 147 'folder2/file1.sts', 148 'folder2/file2.sts', 149 'folder2/file3.sts', 150 'folder3/file1.sts', 151 'folder3/file2.sts', 152 'folder3/test2.sts', 153 'folder4/file1.sts', 154 'fol-der 1/fi_le 1.sts' 155 } 156 self.assertSetEqual(actual, expected) 157 158 def test_ch7(self) -> None: 159 actual = ChapterTest.chapters.filter_by_chapter( 160 chapter_name='ch7', 161 base_folder=ChapterTest.base_folder, 162 extension="sts", 163 files=ChapterTest.files 164 ) 165 expected: Set[str] = set() 166 self.assertSetEqual(actual, expected) 167 168 def test_ch8(self) -> None: 169 actual = ChapterTest.chapters.filter_by_chapter( 170 chapter_name='ch8', 171 base_folder=ChapterTest.base_folder, 172 extension="sts", 173 files=ChapterTest.files 174 ) 175 expected: Set[str] = { 176 'folder1/file1.sts', 177 'folder2/file2.sts', 178 'folder2/file3.sts', 179 'folder3/file1.sts', 180 'folder3/file2.sts' 181 } 182 self.assertSetEqual(actual, expected) 183 184 def test_ch9(self) -> None: 185 actual = ChapterTest.chapters.filter_by_chapter( 186 chapter_name='ch9', 187 base_folder=ChapterTest.base_folder, 188 extension="sts", 189 files=ChapterTest.files 190 ) 191 expected: Set[str] = { 192 'folder1/file1.sts', 193 'folder3/file1.sts', 194 'folder3/file2.sts', 195 'folder4/file1.sts' 196 } 197 self.assertSetEqual(actual, expected) 198 199 def test_ch10(self) -> None: 200 actual = ChapterTest.chapters.filter_by_chapter( 201 chapter_name='ch10', 202 base_folder=ChapterTest.base_folder, 203 extension="sts", 204 files=ChapterTest.files 205 ) 206 expected: Set[str] = { 207 'folder4/file1.sts' 208 } 209 self.assertSetEqual(actual, expected) 210 211 def test_ch11(self) -> None: 212 actual = ChapterTest.chapters.filter_by_chapter( 213 chapter_name='ch11', 214 base_folder=ChapterTest.base_folder, 215 extension="sts", 216 files=ChapterTest.files 217 ) 218 expected: Set[str] = { 219 'folder1/file1.sts', 220 'folder3/file1.sts', 221 'folder3/file2.sts', 222 } 223 self.assertSetEqual(actual, expected) 224 225 def test_ch12(self) -> None: 226 actual = ChapterTest.chapters.filter_by_chapter( 227 chapter_name='ch12', 228 base_folder=ChapterTest.base_folder, 229 extension="sts", 230 files=ChapterTest.files 231 ) 232 expected: Set[str] = set() 233 self.assertSetEqual(actual, expected) 234 235 def test_ch13(self) -> None: 236 actual = ChapterTest.chapters.filter_by_chapter( 237 chapter_name='ch13', 238 base_folder=ChapterTest.base_folder, 239 extension="sts", 240 files=ChapterTest.files 241 ) 242 expected: Set[str] = set() 243 self.assertSetEqual(actual, expected) 244 245 def test_ch14(self) -> None: 246 actual = ChapterTest.chapters.filter_by_chapter( 247 chapter_name='ch14', 248 base_folder=ChapterTest.base_folder, 249 extension="sts", 250 files=ChapterTest.files 251 ) 252 expected: Set[str] = set() 253 self.assertSetEqual(actual, expected) 254 255 def test_ch15(self) -> None: 256 actual = ChapterTest.chapters.filter_by_chapter( 257 chapter_name='ch15', 258 base_folder=ChapterTest.base_folder, 259 extension="sts", 260 files=ChapterTest.files 261 ) 262 expected: Set[str] = set() 263 self.assertSetEqual(actual, expected) 264 265 def test_ch16(self) -> None: 266 actual = ChapterTest.chapters.filter_by_chapter( 267 chapter_name='ch16', 268 base_folder=ChapterTest.base_folder, 269 extension="sts", 270 files=ChapterTest.files 271 ) 272 expected: Set[str] = { 273 'fol-der 1/fi_le 1.sts' 274 } 275 self.assertSetEqual(actual, expected) 276 277 def test_non_exist_chapter(self) -> None: 278 actual = ChapterTest.chapters.filter_by_chapter( 279 chapter_name='non-exist', 280 base_folder=ChapterTest.base_folder, 281 extension="sts", 282 files=ChapterTest.files 283 ) 284 expected: Set[str] = set() 285 self.assertSetEqual(actual, expected) 286