1fd4e5da5Sopenharmony_ci# Copyright (c) 2019 Google LLC 2fd4e5da5Sopenharmony_ci# 3fd4e5da5Sopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 4fd4e5da5Sopenharmony_ci# you may not use this file except in compliance with the License. 5fd4e5da5Sopenharmony_ci# You may obtain a copy of the License at 6fd4e5da5Sopenharmony_ci# 7fd4e5da5Sopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 8fd4e5da5Sopenharmony_ci# 9fd4e5da5Sopenharmony_ci# Unless required by applicable law or agreed to in writing, software 10fd4e5da5Sopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 11fd4e5da5Sopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12fd4e5da5Sopenharmony_ci# See the License for the specific language governing permissions and 13fd4e5da5Sopenharmony_ci# limitations under the License. 14fd4e5da5Sopenharmony_ci"""Tests for the spirv test framework module.""" 15fd4e5da5Sopenharmony_ci 16fd4e5da5Sopenharmony_cifrom spirv_test_framework import get_all_test_methods, get_all_superclasses 17fd4e5da5Sopenharmony_ciimport unittest 18fd4e5da5Sopenharmony_ci 19fd4e5da5Sopenharmony_ci# Classes to be used in testing get_all_{superclasses|test_methods}() 20fd4e5da5Sopenharmony_ci 21fd4e5da5Sopenharmony_ci 22fd4e5da5Sopenharmony_ciclass Root: 23fd4e5da5Sopenharmony_ci 24fd4e5da5Sopenharmony_ci def check_root(self): 25fd4e5da5Sopenharmony_ci pass 26fd4e5da5Sopenharmony_ci 27fd4e5da5Sopenharmony_ci 28fd4e5da5Sopenharmony_ciclass A(Root): 29fd4e5da5Sopenharmony_ci 30fd4e5da5Sopenharmony_ci def check_a(self): 31fd4e5da5Sopenharmony_ci pass 32fd4e5da5Sopenharmony_ci 33fd4e5da5Sopenharmony_ci 34fd4e5da5Sopenharmony_ciclass B(Root): 35fd4e5da5Sopenharmony_ci 36fd4e5da5Sopenharmony_ci def check_b(self): 37fd4e5da5Sopenharmony_ci pass 38fd4e5da5Sopenharmony_ci 39fd4e5da5Sopenharmony_ci 40fd4e5da5Sopenharmony_ciclass C(Root): 41fd4e5da5Sopenharmony_ci 42fd4e5da5Sopenharmony_ci def check_c(self): 43fd4e5da5Sopenharmony_ci pass 44fd4e5da5Sopenharmony_ci 45fd4e5da5Sopenharmony_ci 46fd4e5da5Sopenharmony_ciclass D(Root): 47fd4e5da5Sopenharmony_ci 48fd4e5da5Sopenharmony_ci def check_d(self): 49fd4e5da5Sopenharmony_ci pass 50fd4e5da5Sopenharmony_ci 51fd4e5da5Sopenharmony_ci 52fd4e5da5Sopenharmony_ciclass E(Root): 53fd4e5da5Sopenharmony_ci 54fd4e5da5Sopenharmony_ci def check_e(self): 55fd4e5da5Sopenharmony_ci pass 56fd4e5da5Sopenharmony_ci 57fd4e5da5Sopenharmony_ci 58fd4e5da5Sopenharmony_ciclass H(B, C, D): 59fd4e5da5Sopenharmony_ci 60fd4e5da5Sopenharmony_ci def check_h(self): 61fd4e5da5Sopenharmony_ci pass 62fd4e5da5Sopenharmony_ci 63fd4e5da5Sopenharmony_ci 64fd4e5da5Sopenharmony_ciclass I(E): 65fd4e5da5Sopenharmony_ci 66fd4e5da5Sopenharmony_ci def check_i(self): 67fd4e5da5Sopenharmony_ci pass 68fd4e5da5Sopenharmony_ci 69fd4e5da5Sopenharmony_ci 70fd4e5da5Sopenharmony_ciclass O(H, I): 71fd4e5da5Sopenharmony_ci 72fd4e5da5Sopenharmony_ci def check_o(self): 73fd4e5da5Sopenharmony_ci pass 74fd4e5da5Sopenharmony_ci 75fd4e5da5Sopenharmony_ci 76fd4e5da5Sopenharmony_ciclass U(A, O): 77fd4e5da5Sopenharmony_ci 78fd4e5da5Sopenharmony_ci def check_u(self): 79fd4e5da5Sopenharmony_ci pass 80fd4e5da5Sopenharmony_ci 81fd4e5da5Sopenharmony_ci 82fd4e5da5Sopenharmony_ciclass X(U, A): 83fd4e5da5Sopenharmony_ci 84fd4e5da5Sopenharmony_ci def check_x(self): 85fd4e5da5Sopenharmony_ci pass 86fd4e5da5Sopenharmony_ci 87fd4e5da5Sopenharmony_ci 88fd4e5da5Sopenharmony_ciclass R1: 89fd4e5da5Sopenharmony_ci 90fd4e5da5Sopenharmony_ci def check_r1(self): 91fd4e5da5Sopenharmony_ci pass 92fd4e5da5Sopenharmony_ci 93fd4e5da5Sopenharmony_ci 94fd4e5da5Sopenharmony_ciclass R2: 95fd4e5da5Sopenharmony_ci 96fd4e5da5Sopenharmony_ci def check_r2(self): 97fd4e5da5Sopenharmony_ci pass 98fd4e5da5Sopenharmony_ci 99fd4e5da5Sopenharmony_ci 100fd4e5da5Sopenharmony_ciclass Multi(R1, R2): 101fd4e5da5Sopenharmony_ci 102fd4e5da5Sopenharmony_ci def check_multi(self): 103fd4e5da5Sopenharmony_ci pass 104fd4e5da5Sopenharmony_ci 105fd4e5da5Sopenharmony_ci 106fd4e5da5Sopenharmony_ciclass TestSpirvTestFramework(unittest.TestCase): 107fd4e5da5Sopenharmony_ci def test_get_all_superclasses(self): 108fd4e5da5Sopenharmony_ci self.assertEqual(get_all_superclasses(A), [Root]) 109fd4e5da5Sopenharmony_ci self.assertEqual(get_all_superclasses(B), [Root]) 110fd4e5da5Sopenharmony_ci self.assertEqual(get_all_superclasses(C), [Root]) 111fd4e5da5Sopenharmony_ci self.assertEqual(get_all_superclasses(D), [Root]) 112fd4e5da5Sopenharmony_ci self.assertEqual(get_all_superclasses(E), [Root]) 113fd4e5da5Sopenharmony_ci 114fd4e5da5Sopenharmony_ci self.assertEqual(get_all_superclasses(H), [Root, B, C, D]) 115fd4e5da5Sopenharmony_ci self.assertEqual(get_all_superclasses(I), [Root, E]) 116fd4e5da5Sopenharmony_ci 117fd4e5da5Sopenharmony_ci self.assertEqual(get_all_superclasses(O), [Root, B, C, D, E, H, I]) 118fd4e5da5Sopenharmony_ci 119fd4e5da5Sopenharmony_ci self.assertEqual(get_all_superclasses( 120fd4e5da5Sopenharmony_ci U), [Root, B, C, D, E, H, I, A, O]) 121fd4e5da5Sopenharmony_ci self.assertEqual(get_all_superclasses( 122fd4e5da5Sopenharmony_ci X), [Root, B, C, D, E, H, I, A, O, U]) 123fd4e5da5Sopenharmony_ci 124fd4e5da5Sopenharmony_ci self.assertEqual(get_all_superclasses(Multi), [R1, R2]) 125fd4e5da5Sopenharmony_ci 126fd4e5da5Sopenharmony_ci def test_get_all_methods(self): 127fd4e5da5Sopenharmony_ci self.assertEqual(get_all_test_methods(A), ['check_root', 'check_a']) 128fd4e5da5Sopenharmony_ci self.assertEqual(get_all_test_methods(B), ['check_root', 'check_b']) 129fd4e5da5Sopenharmony_ci self.assertEqual(get_all_test_methods(C), ['check_root', 'check_c']) 130fd4e5da5Sopenharmony_ci self.assertEqual(get_all_test_methods(D), ['check_root', 'check_d']) 131fd4e5da5Sopenharmony_ci self.assertEqual(get_all_test_methods(E), ['check_root', 'check_e']) 132fd4e5da5Sopenharmony_ci 133fd4e5da5Sopenharmony_ci self.assertEqual( 134fd4e5da5Sopenharmony_ci get_all_test_methods(H), 135fd4e5da5Sopenharmony_ci ['check_root', 'check_b', 'check_c', 'check_d', 'check_h']) 136fd4e5da5Sopenharmony_ci self.assertEqual(get_all_test_methods( 137fd4e5da5Sopenharmony_ci I), ['check_root', 'check_e', 'check_i']) 138fd4e5da5Sopenharmony_ci 139fd4e5da5Sopenharmony_ci self.assertEqual( 140fd4e5da5Sopenharmony_ci get_all_test_methods(O), [ 141fd4e5da5Sopenharmony_ci 'check_root', 'check_b', 'check_c', 'check_d', 'check_e', 'check_h', 142fd4e5da5Sopenharmony_ci 'check_i', 'check_o' 143fd4e5da5Sopenharmony_ci ]) 144fd4e5da5Sopenharmony_ci 145fd4e5da5Sopenharmony_ci self.assertEqual( 146fd4e5da5Sopenharmony_ci get_all_test_methods(U), [ 147fd4e5da5Sopenharmony_ci 'check_root', 'check_b', 'check_c', 'check_d', 'check_e', 'check_h', 148fd4e5da5Sopenharmony_ci 'check_i', 'check_a', 'check_o', 'check_u' 149fd4e5da5Sopenharmony_ci ]) 150fd4e5da5Sopenharmony_ci 151fd4e5da5Sopenharmony_ci self.assertEqual( 152fd4e5da5Sopenharmony_ci get_all_test_methods(X), [ 153fd4e5da5Sopenharmony_ci 'check_root', 'check_b', 'check_c', 'check_d', 'check_e', 'check_h', 154fd4e5da5Sopenharmony_ci 'check_i', 'check_a', 'check_o', 'check_u', 'check_x' 155fd4e5da5Sopenharmony_ci ]) 156fd4e5da5Sopenharmony_ci 157fd4e5da5Sopenharmony_ci self.assertEqual( 158fd4e5da5Sopenharmony_ci get_all_test_methods(Multi), ['check_r1', 'check_r2', 'check_multi']) 159