/**
* This file is part of git-as-svn. It is subject to the license terms
* in the LICENSE file found in the top-level directory of this distribution
* and at http://www.gnu.org/licenses/gpl-2.0.html. No part of git-as-svn,
* including this file, may be copied, modified, propagated, or distributed
* except according to the terms contained in the LICENSE file.
*/
package svnserver;
import com.google.common.io.ByteStreams;
import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* Test for ReferenceHelper.
*
* @author a.navrotskiy
*/
public class ReferenceLinkTest {
@NotNull
private static final Logger log = LoggerFactory.getLogger(ReferenceLinkTest.class);
@NotNull
@DataProvider
public static Object[][] referenceLinkData() {
final List<Object[]> result = new ArrayList<>();
for (ReferenceLink referenceLink : ReferenceLink.values()) {
for (ReferenceLink.Lang lang : ReferenceLink.getLanguages()) {
result.add(new Object[]{referenceLink, lang});
}
}
return result.toArray(new Object[result.size()][]);
}
@Test
public void languagesList() {
File poDir = new File("docbook/src/main/po");
log.info("Localization path: " + poDir.getAbsolutePath());
Assert.assertTrue(poDir.isDirectory());
final Set<String> expected = Arrays.asList(poDir.listFiles(pathname -> pathname.isFile() && pathname.getName().endsWith(".po")))
.stream()
.map((file) -> {
final String name = file.getName();
return name.substring(0, name.length() - 3);
})
.collect(Collectors.toSet());
final Set<String> actual = ReferenceLink.getLanguages()
.stream()
.map(ReferenceLink.Lang::getName)
.collect(Collectors.toSet());
Assert.assertEquals(actual, expected);
}
@Test(dataProvider = "referenceLinkData")
public void referenceLink(@NotNull ReferenceLink referenceLink, @NotNull ReferenceLink.Lang lang) throws IOException {
try (InputStream stream = new URL(referenceLink.getLink(lang)).openStream()) {
ByteStreams.toByteArray(stream);
}
}
}