1/* 2 * Copyright 2018 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package androidx.navigation.safe.args.generator 18 19import org.hamcrest.CoreMatchers.`is` 20import org.hamcrest.MatcherAssert.assertThat 21import org.junit.Rule 22import org.junit.Test 23import org.junit.rules.TemporaryFolder 24import org.junit.runner.RunWith 25import org.junit.runners.JUnit4 26import java.io.File 27 28@RunWith(JUnit4::class) 29class NavGeneratorTest { 30 31 @Suppress("MemberVisibilityCanBePrivate") 32 @get:Rule 33 val workingDir = TemporaryFolder() 34 35 @Test 36 fun test() { 37 val output = generateSafeArgs("foo", "foo.flavor", 38 testData("naive_test.xml"), workingDir.root) 39 val javaNames = output.files 40 val expectedSet = setOf( 41 "androidx.navigation.testapp.MainFragmentDirections", 42 "foo.flavor.NextFragmentDirections", 43 "androidx.navigation.testapp.MainFragmentArgs", 44 "foo.flavor.NextFragmentArgs" 45 ) 46 assertThat(output.errors.isEmpty(), `is`(true)) 47 assertThat(javaNames.toSet(), `is`(expectedSet)) 48 javaNames.forEach { name -> 49 val file = File(workingDir.root, "${name.replace('.', File.separatorChar)}.java") 50 assertThat(file.exists(), `is`(true)) 51 } 52 } 53}