From bcdd11c5a3e81cd39e4e74aa2534e9c86c7a239e Mon Sep 17 00:00:00 2001 From: KKlochko Date: Sun, 1 Oct 2023 20:16:05 +0300 Subject: [PATCH] Add the ClassLoader. --- .../tests/loaders/ClassLoader.java | 26 +++++++++++ .../loaders/IntegratedClassLoader.groovy | 43 +++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 src/main/java/space/kklochko/simple_jbdd/tests/loaders/ClassLoader.java create mode 100644 src/test/groovy/space/kklochko/simple_jbdd/tests/loaders/IntegratedClassLoader.groovy diff --git a/src/main/java/space/kklochko/simple_jbdd/tests/loaders/ClassLoader.java b/src/main/java/space/kklochko/simple_jbdd/tests/loaders/ClassLoader.java new file mode 100644 index 0000000..3806a16 --- /dev/null +++ b/src/main/java/space/kklochko/simple_jbdd/tests/loaders/ClassLoader.java @@ -0,0 +1,26 @@ +package space.kklochko.simple_jbdd.tests.loaders; + +import java.util.ArrayList; +import java.util.Set; + +public class ClassLoader { + + AbstractNameClassLoader nameLoader; + + public ClassLoader(AbstractNameClassLoader nameLoader) { + this.nameLoader = nameLoader; + } + + public ArrayList load() { + Set> names = nameLoader.load(); + ArrayList classes = new ArrayList<>(); + + for(Class name : names) { + SingleClassLoader loader = new SingleClassLoader(name.getName()); + classes.add((T) loader.load()); + } + + return classes; + } +} + diff --git a/src/test/groovy/space/kklochko/simple_jbdd/tests/loaders/IntegratedClassLoader.groovy b/src/test/groovy/space/kklochko/simple_jbdd/tests/loaders/IntegratedClassLoader.groovy new file mode 100644 index 0000000..78b75f5 --- /dev/null +++ b/src/test/groovy/space/kklochko/simple_jbdd/tests/loaders/IntegratedClassLoader.groovy @@ -0,0 +1,43 @@ +package space.kklochko.simple_jbdd.tests.loaders + +import spock.lang.Narrative +import spock.lang.Specification +import spock.lang.Subject +import spock.lang.Title + +@Narrative("""The loader must return a test classes or null, so +those tests check if responses are right. +""") +@Title("Integrated tests for ClassLoader.") +class IntegratedClassLoader extends Specification { + def "The classes have been loaded."() { + given: "I have a name class loader" + def nameLoader = new NameClassLoader() + + and: "I have a loader for classes" + @Subject + def loader = new ClassLoader(nameLoader) + + when: "The classes were loaded" + def classes = loader.load() + + then: "Checking that the test result is expected" + 3 == classes.size() + } + + def "The classes must be represent the Test interface."() { + given: "I have a name class loader" + def nameLoader = new NameClassLoader() + + and: "I have a loader for classes" + @Subject + def loader = new ClassLoader(nameLoader) + + when: "The classes were loaded" + def classes = loader.load() + + then: "Checking that the test result is expected" + classes.every({ space.kklochko.simple_jbdd.tests.Test.class.isAssignableFrom(it) }) + } +} +