1db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets/* 2db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets * Copyright (C) 2016 The Android Open Source Project 3db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets * 4db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets * Licensed under the Apache License, Version 2.0 (the "License"); 5db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets * you may not use this file except in compliance with the License. 6db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets * You may obtain a copy of the License at 7db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets * 8db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets * http://www.apache.org/licenses/LICENSE-2.0 9db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets * 10db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets * Unless required by applicable law or agreed to in writing, software 11db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets * distributed under the License is distributed on an "AS IS" BASIS, 12db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets * See the License for the specific language governing permissions and 14db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets * limitations under the License. 15db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets */ 16db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets 17bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viverettepackage androidx.lifecycle.utils 18db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets 19bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viveretteimport androidx.lifecycle.LifecycleProcessor 20db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinetsimport com.google.testing.compile.CompileTester 21db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinetsimport com.google.testing.compile.JavaFileObjects 227c63d6b4d54e7ce5150231c152c30dcec9ebe2f2Sergey Vasilinetsimport com.google.testing.compile.JavaSourcesSubject 23db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinetsimport java.io.File 24db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinetsimport java.nio.charset.Charset 25db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinetsimport javax.tools.JavaFileObject 26db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets 277c63d6b4d54e7ce5150231c152c30dcec9ebe2f2Sergey Vasilinetsfun load(fullClassName: String, folder: String): JavaFileObject { 28e705b41d213fa4f4174fd1b860151621c5ce839dSergey Vasilinets val folderPath = "src/tests/test-data/${if (folder.isEmpty()) "" else folder + "/"}" 297c63d6b4d54e7ce5150231c152c30dcec9ebe2f2Sergey Vasilinets val split = fullClassName.split(".") 307c63d6b4d54e7ce5150231c152c30dcec9ebe2f2Sergey Vasilinets val code = File("$folderPath/${split.last()}.java").readText(Charset.defaultCharset()) 317c63d6b4d54e7ce5150231c152c30dcec9ebe2f2Sergey Vasilinets return JavaFileObjects.forSourceString(fullClassName, code) 32db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets} 33db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets 340af2c3fe23515ba1b51095e331cd354ecf970010Sergey Vasilinetsfun processClass(className: String, vararg fullClassNames: String): CompileTester { 350af2c3fe23515ba1b51095e331cd354ecf970010Sergey Vasilinets val javaFiles = fullClassNames.map { load(it, "") }.toTypedArray() 360af2c3fe23515ba1b51095e331cd354ecf970010Sergey Vasilinets val processedWith = JavaSourcesSubject.assertThat(load(className, ""), *javaFiles) 370af2c3fe23515ba1b51095e331cd354ecf970010Sergey Vasilinets .processedWith(LifecycleProcessor()) 38db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets return checkNotNull(processedWith) 39db70d9afb916a2eba4bc2425ec2792e84eee4a60Sergey Vasilinets} 40