/*
 * Copyright 2016-2018 the original author or authors.
 *
 * Licensed 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.joinfaces.autoconfigure;

import java.util.Set;
import java.util.stream.Stream;

import org.junit.jupiter.api.Test;

import static org.assertj.core.api.Assertions.assertThat;

class ClasspathScanUtilTest {

	@Test
	void getClasses_empty() {
		Set<Class<?>> classes = ClasspathScanUtil.getClasses(Stream.empty(), getClass().getClassLoader());

		assertThat(classes).isEmpty();
	}

	@Test
	void getClasses_notFound() {
		Set<Class<?>> classes = ClasspathScanUtil.getClasses(Stream.of("foo.Bar"), getClass().getClassLoader());

		assertThat(classes).isEmpty();
	}

	@Test
	void getClasses_one() {
		Set<Class<?>> classes = ClasspathScanUtil.getClasses(Stream.of(this.getClass().getName()), getClass().getClassLoader());

		assertThat(classes).contains(this.getClass());
	}
}

@@ -653,16 +653,185 @@
 igure;%0A%0A
+import java.io.ByteArrayInputStream;%0Aimport java.io.IOException;%0Aimport java.lang.annotation.Annotation;%0Aimport java.nio.charset.StandardCharsets;%0Aimport java.util.Map;%0A
 import j
@@ -1565,11 +1565,597 @@
 s());%0A%09%7D
+%0A%0A%09@Test%0A%09void readAnnotationClassMap() throws IOException %7B%0A%0A%09%09String sb = Test.class.getName() +%0A%09%09%09%09%22=%22 +%0A%09%09%09%09ClasspathScanUtil.class.getName() +%0A%09%09%09%09%22,%22 +%0A%09%09%09%09ClasspathScanUtilTest.class.getName() +%0A%09%09%09%09%22%5Cn%22;%0A%09%09ByteArrayInputStream in = new ByteArrayInputStream(sb.getBytes(StandardCharsets.UTF_8));%0A%0A%09%09Map%3CClass%3C? extends Annotation%3E, Set%3CClass%3C?%3E%3E%3E map = ClasspathScanUtil.readAnnotationClassMap(in, this.getClass().getClassLoader());%0A%0A%09%09assertThat(map).containsKey(Test.class);%0A%0A%09%09assertThat(map.get(Test.class)).contains(ClasspathScanUtil.class, ClasspathScanUtilTest.class);%0A%09%7D
 %0A%7D%0A

add Unit test