Browse Source

Polish StandardTypeLocatorTests

pull/31186/head
Sam Brannen 1 year ago
parent
commit
05790e36db
  1. 61
      spring-expression/src/test/java/org/springframework/expression/spel/StandardTypeLocatorTests.java

61
spring-expression/src/test/java/org/springframework/expression/spel/StandardTypeLocatorTests.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2022 the original author or authors.
* Copyright 2002-2023 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.
@ -16,43 +16,60 @@ @@ -16,43 +16,60 @@
package org.springframework.expression.spel;
import java.util.List;
import java.net.URL;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.CsvSource;
import org.springframework.expression.EvaluationException;
import org.springframework.expression.spel.support.StandardTypeLocator;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
/**
* Unit tests for type comparison.
* Unit tests for {@link StandardTypeLocator}.
*
* @author Andy Clement
* @author Sam Brannen
*/
class StandardTypeLocatorTests {
private final StandardTypeLocator locator = new StandardTypeLocator();
@ParameterizedTest(name = "[{index}] {0} --> {1}")
@CsvSource(delimiterString = "-->", textBlock = """
Boolean --> java.lang.Boolean
Character --> java.lang.Character
Number --> java.lang.Number
Integer --> java.lang.Integer
String --> java.lang.String
java.lang.Boolean --> java.lang.Boolean
java.lang.Integer --> java.lang.Integer
java.lang.String --> java.lang.String
""")
void defaultImports(String typeName, Class<?> type) {
assertThat(locator.findType(typeName)).isEqualTo(type);
}
@Test
void importPrefixes() {
assertThat(locator.getImportPrefixes()).containsExactly("java.lang");
}
@Test
void typeNotFound() {
assertThatExceptionOfType(SpelEvaluationException.class)
.isThrownBy(() -> locator.findType("URL"))
.extracting(SpelEvaluationException::getMessageCode)
.isEqualTo(SpelMessage.TYPE_NOT_FOUND);
}
@Test
void testImports() throws EvaluationException {
StandardTypeLocator locator = new StandardTypeLocator();
assertThat(locator.findType("java.lang.Integer")).isEqualTo(Integer.class);
assertThat(locator.findType("java.lang.String")).isEqualTo(String.class);
List<String> prefixes = locator.getImportPrefixes();
assertThat(prefixes).hasSize(1);
assertThat(prefixes.contains("java.lang")).isTrue();
assertThat(prefixes.contains("java.util")).isFalse();
assertThat(locator.findType("Boolean")).isEqualTo(Boolean.class);
// currently does not know about java.util by default
// assertEquals(java.util.List.class,locator.findType("List"));
assertThatExceptionOfType(SpelEvaluationException.class).isThrownBy(() ->
locator.findType("URL"))
.satisfies(ex -> assertThat(ex.getMessageCode()).isEqualTo(SpelMessage.TYPE_NOT_FOUND));
void registerImport() {
locator.registerImport("java.net");
assertThat(locator.findType("URL")).isEqualTo(java.net.URL.class);
assertThat(locator.findType("URL")).isEqualTo(URL.class);
}
}

Loading…
Cancel
Save