1b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak/*
2b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak * Copyright 2017, The Android Open Source Project
3b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak *
4b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak * Licensed under the Apache License, Version 2.0 (the "License");
5b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak * you may not use this file except in compliance with the License.
6b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak * You may obtain a copy of the License at
7b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak *
8b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak *      http://www.apache.org/licenses/LICENSE-2.0
9b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak *
10b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak * Unless required by applicable law or agreed to in writing, software
11b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak * distributed under the License is distributed on an "AS IS" BASIS,
12b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak * See the License for the specific language governing permissions and
14b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak * limitations under the License.
15b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak */
16b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzakpackage com.android.managedprovisioning.common;
17b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak
18b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzakimport static org.hamcrest.CoreMatchers.equalTo;
19b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzakimport static org.junit.Assert.assertThat;
20b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak
21b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzakimport static java.util.Arrays.asList;
22b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzakimport static java.util.Collections.emptyList;
23b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzakimport static java.util.Collections.singletonList;
24b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak
25b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzakimport android.content.res.Resources;
26b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzakimport android.support.test.InstrumentationRegistry;
2789db5ec7756b796732c8865df8276a16116d235eVictor Changimport android.support.test.filters.SmallTest;
28b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak
29b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzakimport org.junit.After;
30b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzakimport org.junit.Before;
31b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzakimport org.junit.Test;
32b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak
33b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzakimport java.util.List;
34b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzakimport java.util.Locale;
35b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak
3689db5ec7756b796732c8865df8276a16116d235eVictor Chang
3789db5ec7756b796732c8865df8276a16116d235eVictor Chang@SmallTest
38b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzakpublic class StringConcatenatorTest {
39b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    private StringConcatenator mInstance;
40b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    private LocaleTestUtils mLocaleTestUtils;
41b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak
42b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    @Before
43b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    public void setUp() throws Exception {
44b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak        mLocaleTestUtils = new LocaleTestUtils(InstrumentationRegistry.getTargetContext());
45a0b945e9f65a9cb5362072d1e669db5c31c194e3Jakub Gielzak        mLocaleTestUtils.setLocale(Locale.US); // sets a stable locale so tests behave consistently
46b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak
47b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak        Resources resources = InstrumentationRegistry.getTargetContext().getResources();
48b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak        mInstance = new StringConcatenator(resources);
49b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    }
50b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak
51b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    @After
52b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    public void tearDown() throws Exception {
53b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak        mLocaleTestUtils.restoreLocale();
54b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    }
55b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak
56b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    @Test
57b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    public void joinNull() {
58b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak        assertCorrect(null, null);
59b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    }
60b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak
61b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    @Test
62b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    public void joinEmpty() {
63b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak        assertCorrect(emptyList(), "");
64b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    }
65b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak
66b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    @Test
67b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    public void joinOne() {
68b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak        assertCorrect(singletonList("word1"), "word1");
69b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    }
70b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak
71b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    @Test
72b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    public void joinTwo() {
73a0b945e9f65a9cb5362072d1e669db5c31c194e3Jakub Gielzak        assertCorrect(asList("word1", "word2"), "word1 and word2");
74b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    }
75b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak
76b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    @Test
77b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    public void joinThree() {
7857d7cfbcd9ff8f4d8c437df630965c89fbd953fbJakub Gielzak        assertCorrect(asList("word1", "word2", "word3"), "word1, word2, and word3");
79b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    }
80b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak
81b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    @Test
82b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    public void joinMany() {
83b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak        assertCorrect(asList("word1", "word2", "word3", "word4", "word5", "word6", "word7"),
8457d7cfbcd9ff8f4d8c437df630965c89fbd953fbJakub Gielzak                "word1, word2, word3, word4, word5, word6, and word7"
85b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak        );
86b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    }
87b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak
88b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    private void assertCorrect(List<String> input, String expected) {
89b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak        assertThat(mInstance.join(input), equalTo(expected));
90b9a9b872b7bd51a738dfef1b55fe1990d3ecb309Jakub Gielzak    }
91a0b945e9f65a9cb5362072d1e669db5c31c194e3Jakub Gielzak}
92