blob: 9f26e558c0f4942b3d86a717690f59a4c011bc05 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.tomee.website;
import org.junit.Test;
import org.tomitribe.util.Archive;
import org.tomitribe.util.Files;
import org.tomitribe.util.Join;
import java.io.File;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import static org.junit.Assert.assertEquals;
public class LearningLinksTest {
@Test
public void pathToContentRoot() {
final File file = new File("tomee-site-generator/target/jbake/content/tomee-9.0/pt/examples/injection-of-entitymanager.adoc");
final String basePath = LearningLinks.pathToContentRoot(file);
assertEquals("../../../", basePath);
}
@Test
public void pathFromContentRoot() {
final File file = new File("tomee-site-generator/target/jbake/content/tomee-9.0/pt/examples/injection-of-entitymanager.adoc");
final String basePath = LearningLinks.pathFromContentRoot(file);
assertEquals("tomee-9.0/pt/examples/injection-of-entitymanager.adoc", basePath);
}
@Test
public void sortBySize() throws IOException {
final File dir = Archive.archive()
.add("target/jbake/content/tomee-9.0/examples/b.adoc", new byte[141])
.add("target/jbake/content/tomee-9.0/examples/a.adoc", new byte[60])
.add("target/jbake/content/tomee-9.0/examples/c.adoc", new byte[10])
.add("target/jbake/content/tomee-8.0/examples/b.adoc", new byte[123])
.add("target/jbake/content/tomee-8.0/examples/a.adoc", new byte[61])
.add("target/jbake/content/tomee-8.0/examples/c.adoc", new byte[4])
.add("target/jbake/content/latest/examples/b.adoc", new byte[12])
.add("target/jbake/content/latest/examples/a.adoc", new byte[5])
.add("target/jbake/content/latest/examples/c.adoc", new byte[90])
.toDir();
final List<Example> examples = Files.collect(dir).stream()
.filter(file -> file.getName().endsWith(".adoc"))
.map(Example::from)
.peek(example -> example.setDestReadme(example.getSrcReadme()))
.collect(Collectors.toList());
Collections.shuffle(examples);
examples.sort(LearningLinks::compareBySize);
final List<String> collect = examples.stream()
.map(Example::getDestReadme)
.map(LearningLinks::pathFromContentRoot)
.collect(Collectors.toList());
assertEquals("tomee-9.0/examples/b.adoc\n" +
"tomee-8.0/examples/b.adoc\n" +
"latest/examples/c.adoc\n" +
"tomee-8.0/examples/a.adoc\n" +
"tomee-9.0/examples/a.adoc\n" +
"latest/examples/b.adoc\n" +
"tomee-9.0/examples/c.adoc\n" +
"latest/examples/a.adoc\n" +
"tomee-8.0/examples/c.adoc", Join.join("\n", collect));
}
@Test
public void sortByVersion() throws IOException {
final File dir = Archive.archive()
.add("target/jbake/content/tomee-9.0/examples/b.adoc", new byte[141])
.add("target/jbake/content/tomee-9.0/examples/a.adoc", new byte[60])
.add("target/jbake/content/tomee-9.0/examples/c.adoc", new byte[10])
.add("target/jbake/content/tomee-8.0/examples/b.adoc", new byte[123])
.add("target/jbake/content/tomee-8.0/examples/a.adoc", new byte[61])
.add("target/jbake/content/tomee-8.0/examples/c.adoc", new byte[4])
.add("target/jbake/content/latest/examples/b.adoc", new byte[12])
.add("target/jbake/content/latest/examples/a.adoc", new byte[5])
.add("target/jbake/content/latest/examples/c.adoc", new byte[90])
.toDir();
final List<Example> examples = Files.collect(dir).stream()
.filter(file -> file.getName().endsWith(".adoc"))
.map(Example::from)
.peek(example -> example.setDestReadme(example.getSrcReadme()))
.collect(Collectors.toList());
Collections.shuffle(examples);
examples.sort(LearningLinks::compareBySize); // for stability
examples.sort(LearningLinks::compareByVersion);
final List<String> collect = examples.stream()
.map(Example::getDestReadme)
.map(LearningLinks::pathFromContentRoot)
.collect(Collectors.toList());
assertEquals("" +
"tomee-9.0/examples/c.adoc\n" +
"tomee-9.0/examples/b.adoc\n" +
"tomee-9.0/examples/a.adoc\n" +
"tomee-8.0/examples/c.adoc\n" +
"tomee-8.0/examples/b.adoc\n" +
"tomee-8.0/examples/a.adoc\n" +
"latest/examples/c.adoc\n" +
"latest/examples/b.adoc\n" +
"latest/examples/a.adoc", Join.join("\n", collect));
}
@Test
public void sortByLatest() throws IOException {
final File dir = Archive.archive()
.add("target/jbake/content/master/examples/b.adoc", new byte[111])
.add("target/jbake/content/master/examples/a.adoc", new byte[70])
.add("target/jbake/content/master/examples/c.adoc", new byte[20])
.add("target/jbake/content/tomee-9.0/examples/b.adoc", new byte[141])
.add("target/jbake/content/tomee-9.0/examples/a.adoc", new byte[60])
.add("target/jbake/content/tomee-9.0/examples/c.adoc", new byte[10])
.add("target/jbake/content/tomee-8.0/examples/b.adoc", new byte[123])
.add("target/jbake/content/tomee-8.0/examples/a.adoc", new byte[61])
.add("target/jbake/content/tomee-8.0/examples/c.adoc", new byte[4])
.add("target/jbake/content/latest/examples/b.adoc", new byte[12])
.add("target/jbake/content/latest/examples/a.adoc", new byte[5])
.add("target/jbake/content/latest/examples/c.adoc", new byte[90])
.toDir();
final List<Example> examples = Files.collect(dir).stream()
.filter(file -> file.getName().endsWith(".adoc"))
.map(Example::from)
.peek(example -> example.setDestReadme(example.getSrcReadme()))
.collect(Collectors.toList());
Collections.shuffle(examples);
examples.sort(LearningLinks::compareBySize);
examples.sort(LearningLinks::compareByLatest);
assertEquals("" +
"latest/examples/c.adoc\n" +
"latest/examples/b.adoc\n" +
"latest/examples/a.adoc\n" +
"tomee-9.0/examples/b.adoc\n" +
"tomee-8.0/examples/b.adoc\n" +
"tomee-8.0/examples/a.adoc\n" +
"tomee-9.0/examples/a.adoc\n" +
"tomee-9.0/examples/c.adoc\n" +
"tomee-8.0/examples/c.adoc\n" +
"master/examples/b.adoc\n" +
"master/examples/a.adoc\n" +
"master/examples/c.adoc", toPaths(examples));
}
@Test
public void sort() throws IOException {
final File dir = Archive.archive()
.add("target/jbake/content/master/examples/b.adoc", new byte[111])
.add("target/jbake/content/master/examples/a.adoc", new byte[70])
.add("target/jbake/content/master/examples/c.adoc", new byte[20])
.add("target/jbake/content/tomee-9.0/examples/b.adoc", new byte[141])
.add("target/jbake/content/tomee-9.0/examples/a.adoc", new byte[60])
.add("target/jbake/content/tomee-9.0/examples/c.adoc", new byte[10])
.add("target/jbake/content/tomee-8.0/examples/b.adoc", new byte[123])
.add("target/jbake/content/tomee-8.0/examples/a.adoc", new byte[61])
.add("target/jbake/content/tomee-8.0/examples/c.adoc", new byte[4])
.add("target/jbake/content/latest/examples/b.adoc", new byte[12])
.add("target/jbake/content/latest/examples/a.adoc", new byte[5])
.add("target/jbake/content/latest/examples/c.adoc", new byte[90])
.toDir();
final List<Example> examples = Files.collect(dir).stream()
.filter(file -> file.getName().endsWith(".adoc"))
.map(Example::from)
.peek(example -> example.setDestReadme(example.getSrcReadme()))
.collect(Collectors.toList());
Collections.shuffle(examples);
final List<Example> sorted = LearningLinks.sort(examples);
assertEquals("" +
"latest/examples/c.adoc\n" +
"latest/examples/b.adoc\n" +
"latest/examples/a.adoc\n" +
"tomee-9.0/examples/c.adoc\n" +
"tomee-9.0/examples/b.adoc\n" +
"tomee-9.0/examples/a.adoc\n" +
"tomee-8.0/examples/c.adoc\n" +
"tomee-8.0/examples/b.adoc\n" +
"tomee-8.0/examples/a.adoc\n" +
"master/examples/c.adoc\n" +
"master/examples/b.adoc\n" +
"master/examples/a.adoc", toPaths(sorted));
}
private static String toPaths(final List<Example> examples) {
final List<String> collect = examples.stream()
.map(Example::getDestReadme)
.map(LearningLinks::pathFromContentRoot)
.collect(Collectors.toList());
final String actual = Join.join("\n", collect);
return actual;
}
}