package com.codepoetics.octarine.functional.paths; import org.junit.Test; import java.util.List; import java.util.Map; import java.util.Optional; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.MatcherAssert.assertThat; public class PathTest { @Test public void paths_compose() { Path<Map<String, List<Map<Class<?>, List<String>>>>, String> path = Path.<String, List<Map<Class<?>, List<String>>>>toKey("a") .join(Path.toIndex(3)) .join(Path.<Class<?>, List<String>>toKey(String.class)) .join(Path.toIndex(2)) .join(Path.<String, String>to(s -> Optional.of(s.substring(2, 1)), "thirdChar")); assertThat(path.describe(), equalTo("[a][3][class java.lang.String][2].thirdChar")); } }