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