diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/spi/ListServiceLoaderTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/spi/ListServiceLoaderTest.java new file mode 100644 index 000000000..6d1acdf0a --- /dev/null +++ b/hutool-core/src/test/java/org/dromara/hutool/core/spi/ListServiceLoaderTest.java @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2023 looly(loolly@aliyun.com) + * Hutool is licensed under Mulan PSL v2. + * You can use this software according to the terms and conditions of the Mulan PSL v2. + * You may obtain a copy of Mulan PSL v2 at: + * http://license.coscl.org.cn/MulanPSL2 + * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, + * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, + * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + * See the Mulan PSL v2 for more details. + */ + +package org.dromara.hutool.core.spi; + +import org.dromara.hutool.core.exceptions.UtilException; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class ListServiceLoaderTest { + + @Test + void loadFirstAvailableTest() { + final ListServiceLoader serviceLoader = ListServiceLoader.of(TestSPI1.class); + final TestSPI1 testSPI1 = SpiUtil.loadFirstAvailable(serviceLoader); + Assertions.assertNotNull(testSPI1); + Assertions.assertEquals("test service 1", testSPI1.doSth()); + } + + @Test + void getServiceClassTest() { + final ListServiceLoader serviceLoader = ListServiceLoader.of(TestSPI1.class); + final Class service1 = serviceLoader.getServiceClass(1); + Assertions.assertEquals(TestService1.class, service1); + } + + @Test + void getServiceClassNotExistTest() { + final ListServiceLoader serviceLoader = ListServiceLoader.of(TestSPI1.class); + Assertions.assertThrows(UtilException.class, ()->{ + serviceLoader.getServiceClass(0); + }); + } + + public interface TestSPI1{ + String doSth(); + } + + public static class TestService1 implements TestSPI1 { + @Override + public String doSth() { + return "test service 1"; + } + } +} diff --git a/hutool-core/src/test/java/org/dromara/hutool/core/spi/SpiUtilTest.java b/hutool-core/src/test/java/org/dromara/hutool/core/spi/MapServiceLoaderTest.java similarity index 98% rename from hutool-core/src/test/java/org/dromara/hutool/core/spi/SpiUtilTest.java rename to hutool-core/src/test/java/org/dromara/hutool/core/spi/MapServiceLoaderTest.java index 7596bbeb2..38e1e9cf2 100644 --- a/hutool-core/src/test/java/org/dromara/hutool/core/spi/SpiUtilTest.java +++ b/hutool-core/src/test/java/org/dromara/hutool/core/spi/MapServiceLoaderTest.java @@ -16,7 +16,7 @@ import org.dromara.hutool.core.exceptions.UtilException; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; -public class SpiUtilTest { +public class MapServiceLoaderTest { @Test void loadFirstAvailableTest() { diff --git a/hutool-core/src/test/resources/META-INF/hutool/org.dromara.hutool.core.spi.MapServiceLoaderTest$TestSPI1 b/hutool-core/src/test/resources/META-INF/hutool/org.dromara.hutool.core.spi.MapServiceLoaderTest$TestSPI1 new file mode 100644 index 000000000..97d0d9aef --- /dev/null +++ b/hutool-core/src/test/resources/META-INF/hutool/org.dromara.hutool.core.spi.MapServiceLoaderTest$TestSPI1 @@ -0,0 +1,6 @@ +# 无服务 +serviceEmpty = +# 正常服务 +service1 = org.dromara.hutool.core.spi.MapServiceLoaderTest$TestService1 +# 此服务类未定义 +service2 = org.dromara.hutool.core.spi.MapServiceLoaderTest$TestService2 diff --git a/hutool-core/src/test/resources/META-INF/hutool/org.dromara.hutool.core.spi.SpiUtilTest$TestSPI1 b/hutool-core/src/test/resources/META-INF/hutool/org.dromara.hutool.core.spi.SpiUtilTest$TestSPI1 deleted file mode 100644 index 6bb02d975..000000000 --- a/hutool-core/src/test/resources/META-INF/hutool/org.dromara.hutool.core.spi.SpiUtilTest$TestSPI1 +++ /dev/null @@ -1,6 +0,0 @@ -# 无服务 -serviceEmpty = -# 正常服务 -service1 = org.dromara.hutool.core.spi.SpiUtilTest$TestService1 -# 此服务类未定义 -service2 = org.dromara.hutool.core.spi.SpiUtilTest$TestService2 diff --git a/hutool-core/src/test/resources/META-INF/services/org.dromara.hutool.core.spi.ListServiceLoaderTest$TestSPI1 b/hutool-core/src/test/resources/META-INF/services/org.dromara.hutool.core.spi.ListServiceLoaderTest$TestSPI1 new file mode 100644 index 000000000..9e4ed229a --- /dev/null +++ b/hutool-core/src/test/resources/META-INF/services/org.dromara.hutool.core.spi.ListServiceLoaderTest$TestSPI1 @@ -0,0 +1,14 @@ +# +# Copyright (c) 2023 looly(loolly@aliyun.com) +# Hutool is licensed under Mulan PSL v2. +# You can use this software according to the terms and conditions of the Mulan PSL v2. +# You may obtain a copy of Mulan PSL v2 at: +# http://license.coscl.org.cn/MulanPSL2 +# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, +# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, +# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. +# See the Mulan PSL v2 for more details. +# + +org.dromara.hutool.core.spi.ListServiceLoaderTest$TestService2 +org.dromara.hutool.core.spi.ListServiceLoaderTest$TestService1