This is an automated email from the ASF dual-hosted git repository.

zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new e20e6a177db Add test cases on TablesContext (#33213)
e20e6a177db is described below

commit e20e6a177db964c5b7e6901c005590a4bbb06268
Author: Liang Zhang <[email protected]>
AuthorDate: Fri Oct 11 18:36:59 2024 +0800

    Add test cases on TablesContext (#33213)
---
 .../context/segment/table/TablesContext.java       |  8 ++---
 .../context/segment/table/TablesContextTest.java   | 39 ++++++++++++++--------
 2 files changed, 30 insertions(+), 17 deletions(-)

diff --git 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContext.java
 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContext.java
index 58e34a2aa33..e656b6f4762 100644
--- 
a/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContext.java
+++ 
b/infra/binder/src/main/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContext.java
@@ -69,16 +69,16 @@ public final class TablesContext {
     
     private final Map<String, IdentifierValue> tableNameAliasMap = new 
HashMap<>();
     
-    public TablesContext(final SimpleTableSegment tableSegment, final 
DatabaseType databaseType, final String currentDatabaseName) {
-        this(null == tableSegment ? Collections.emptyList() : 
Collections.singletonList(tableSegment), databaseType, currentDatabaseName);
+    public TablesContext(final SimpleTableSegment table, final DatabaseType 
databaseType, final String currentDatabaseName) {
+        this(null == table ? Collections.emptyList() : 
Collections.singletonList(table), databaseType, currentDatabaseName);
     }
     
     public TablesContext(final Collection<SimpleTableSegment> tables, final 
DatabaseType databaseType, final String currentDatabaseName) {
         this(tables, Collections.emptyMap(), databaseType, 
currentDatabaseName);
     }
     
-    public TablesContext(final Collection<? extends TableSegment> tables, 
final Map<Integer, SelectStatementContext> subqueryContexts, final DatabaseType 
databaseType,
-                         final String currentDatabaseName) {
+    public TablesContext(final Collection<? extends TableSegment> tables, 
final Map<Integer, SelectStatementContext> subqueryContexts,
+                         final DatabaseType databaseType, final String 
currentDatabaseName) {
         if (tables.isEmpty()) {
             return;
         }
diff --git 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContextTest.java
 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContextTest.java
index b9cff285b59..4ab7dabc18d 100644
--- 
a/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContextTest.java
+++ 
b/infra/binder/src/test/java/org/apache/shardingsphere/infra/binder/context/segment/table/TablesContextTest.java
@@ -28,6 +28,7 @@ import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.Alias
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.OwnerSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.SimpleTableSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.TableNameSegment;
+import 
org.apache.shardingsphere.sql.parser.statement.core.segment.generic.table.TableSegment;
 import 
org.apache.shardingsphere.sql.parser.statement.core.value.identifier.IdentifierValue;
 import org.junit.jupiter.api.Test;
 
@@ -49,10 +50,22 @@ import static org.mockito.Mockito.when;
 
 class TablesContextTest {
     
+    private final DatabaseType databaseType = 
TypedSPILoader.getService(DatabaseType.class, "FIXTURE");
+    
+    @Test
+    void assertGetTableNamesWithoutTableSegments() {
+        assertTrue(new TablesContext(Collections.emptyList(), 
Collections.emptyMap(), databaseType, 
DefaultDatabase.LOGIC_NAME).getTableNames().isEmpty());
+    }
+    
+    @Test
+    void assertGetTableNamesWithoutSimpleTableSegments() {
+        assertTrue(new 
TablesContext(Collections.singleton(mock(TableSegment.class)), 
Collections.emptyMap(), databaseType, 
DefaultDatabase.LOGIC_NAME).getTableNames().isEmpty());
+    }
+    
     @Test
     void assertGetTableNames() {
-        TablesContext tablesContext = new 
TablesContext(Arrays.asList(createTableSegment("table_1", "tbl_1"),
-                createTableSegment("table_2", "tbl_2")), 
TypedSPILoader.getService(DatabaseType.class, "FIXTURE"), 
DefaultDatabase.LOGIC_NAME);
+        TablesContext tablesContext = new TablesContext(
+                Arrays.asList(createTableSegment("table_1", "tbl_1"), 
createTableSegment("table_2", "tbl_2"), createTableSegment("DUAL", "dual")), 
databaseType, DefaultDatabase.LOGIC_NAME);
         assertThat(tablesContext.getTableNames(), is(new 
HashSet<>(Arrays.asList("table_1", "table_2"))));
     }
     
@@ -60,7 +73,7 @@ class TablesContextTest {
     void assertInstanceCreatedWhenNoExceptionThrown() {
         SimpleTableSegment tableSegment = new SimpleTableSegment(new 
TableNameSegment(0, 10, new IdentifierValue("tbl")));
         tableSegment.setOwner(new OwnerSegment(0, 0, new 
IdentifierValue("schema")));
-        TablesContext tablesContext = new 
TablesContext(Collections.singleton(tableSegment), 
TypedSPILoader.getService(DatabaseType.class, "FIXTURE"), 
DefaultDatabase.LOGIC_NAME);
+        TablesContext tablesContext = new 
TablesContext(Collections.singleton(tableSegment), databaseType, 
DefaultDatabase.LOGIC_NAME);
         assertThat(tablesContext.getDatabaseName(), is(Optional.of("schema")));
         assertThat(tablesContext.getSchemaName(), is(Optional.of("schema")));
         assertThat(tablesContext.getTableNames(), 
is(Collections.singleton("tbl")));
@@ -70,7 +83,7 @@ class TablesContextTest {
     void assertFindTableNameWhenSingleTable() {
         SimpleTableSegment tableSegment = createTableSegment("table_1", 
"tbl_1");
         ColumnSegment columnSegment = createColumnSegment(null, "col");
-        Map<String, String> actual = new 
TablesContext(Collections.singletonList(tableSegment), 
TypedSPILoader.getService(DatabaseType.class, "FIXTURE"), 
DefaultDatabase.LOGIC_NAME)
+        Map<String, String> actual = new 
TablesContext(Collections.singletonList(tableSegment), databaseType, 
DefaultDatabase.LOGIC_NAME)
                 .findTableNames(Collections.singletonList(columnSegment), 
mock(ShardingSphereSchema.class));
         assertFalse(actual.isEmpty());
         assertThat(actual.get("col"), is("table_1"));
@@ -81,7 +94,7 @@ class TablesContextTest {
         SimpleTableSegment tableSegment1 = createTableSegment("table_1", 
"tbl_1");
         SimpleTableSegment tableSegment2 = createTableSegment("table_2", 
"tbl_2");
         ColumnSegment columnSegment = createColumnSegment("table_1", "col");
-        Map<String, String> actual = new 
TablesContext(Arrays.asList(tableSegment1, tableSegment2), 
TypedSPILoader.getService(DatabaseType.class, "FIXTURE"), 
DefaultDatabase.LOGIC_NAME)
+        Map<String, String> actual = new 
TablesContext(Arrays.asList(tableSegment1, tableSegment2), databaseType, 
DefaultDatabase.LOGIC_NAME)
                 .findTableNames(Collections.singletonList(columnSegment), 
mock(ShardingSphereSchema.class));
         assertFalse(actual.isEmpty());
         assertThat(actual.get("table_1.col"), is("table_1"));
@@ -92,7 +105,7 @@ class TablesContextTest {
         SimpleTableSegment tableSegment1 = createTableSegment("table_1", 
"tbl_1");
         SimpleTableSegment tableSegment2 = createTableSegment("table_2", 
"tbl_2");
         ColumnSegment columnSegment = createColumnSegment(null, "col");
-        Map<String, String> actual = new 
TablesContext(Arrays.asList(tableSegment1, tableSegment2), 
TypedSPILoader.getService(DatabaseType.class, "FIXTURE"), 
DefaultDatabase.LOGIC_NAME)
+        Map<String, String> actual = new 
TablesContext(Arrays.asList(tableSegment1, tableSegment2), databaseType, 
DefaultDatabase.LOGIC_NAME)
                 .findTableNames(Collections.singletonList(columnSegment), 
mock(ShardingSphereSchema.class));
         assertTrue(actual.isEmpty());
     }
@@ -105,7 +118,7 @@ class TablesContextTest {
         
when(schema.getAllColumnNames("table_1")).thenReturn(Collections.singletonList("col"));
         ColumnSegment columnSegment = createColumnSegment(null, "col");
         Map<String, String> actual = new 
TablesContext(Arrays.asList(tableSegment1, tableSegment2),
-                TypedSPILoader.getService(DatabaseType.class, "FIXTURE"), 
DefaultDatabase.LOGIC_NAME).findTableNames(Collections.singletonList(columnSegment),
 schema);
+                databaseType, 
DefaultDatabase.LOGIC_NAME).findTableNames(Collections.singletonList(columnSegment),
 schema);
         assertFalse(actual.isEmpty());
         assertThat(actual.get("col"), is("table_1"));
     }
@@ -120,7 +133,7 @@ class TablesContextTest {
                 new ShardingSphereSchema(DefaultDatabase.LOGIC_NAME, 
Stream.of(table).collect(Collectors.toMap(ShardingSphereTable::getName, value 
-> value)), Collections.emptyMap());
         ColumnSegment columnSegment = createColumnSegment(null, "COL");
         Map<String, String> actual = new 
TablesContext(Arrays.asList(tableSegment1, tableSegment2),
-                TypedSPILoader.getService(DatabaseType.class, "FIXTURE"), 
DefaultDatabase.LOGIC_NAME).findTableNames(Collections.singletonList(columnSegment),
 schema);
+                databaseType, 
DefaultDatabase.LOGIC_NAME).findTableNames(Collections.singletonList(columnSegment),
 schema);
         assertFalse(actual.isEmpty());
         assertThat(actual.get("col"), is("TABLE_1"));
     }
@@ -146,7 +159,7 @@ class TablesContextTest {
         tableSegment1.setOwner(new OwnerSegment(0, 0, new 
IdentifierValue("sharding_db_1")));
         SimpleTableSegment tableSegment2 = createTableSegment("table_1", 
"tbl_1");
         tableSegment2.setOwner(new OwnerSegment(0, 0, new 
IdentifierValue("sharding_db_1")));
-        TablesContext tablesContext = new 
TablesContext(Arrays.asList(tableSegment1, tableSegment2), 
TypedSPILoader.getService(DatabaseType.class, "FIXTURE"), 
DefaultDatabase.LOGIC_NAME);
+        TablesContext tablesContext = new 
TablesContext(Arrays.asList(tableSegment1, tableSegment2), databaseType, 
DefaultDatabase.LOGIC_NAME);
         assertTrue(tablesContext.getDatabaseName().isPresent());
         assertThat(tablesContext.getDatabaseName().get(), is("sharding_db_1"));
     }
@@ -157,7 +170,7 @@ class TablesContextTest {
         tableSegment1.setOwner(new OwnerSegment(0, 0, new 
IdentifierValue("sharding_db_1")));
         SimpleTableSegment tableSegment2 = createTableSegment("table_2", 
"tbl_2");
         tableSegment2.setOwner(new OwnerSegment(0, 0, new 
IdentifierValue("sharding_db_1")));
-        TablesContext tablesContext = new 
TablesContext(Arrays.asList(tableSegment1, tableSegment2), 
TypedSPILoader.getService(DatabaseType.class, "FIXTURE"), 
DefaultDatabase.LOGIC_NAME);
+        TablesContext tablesContext = new 
TablesContext(Arrays.asList(tableSegment1, tableSegment2), databaseType, 
DefaultDatabase.LOGIC_NAME);
         assertTrue(tablesContext.getDatabaseName().isPresent());
         assertThat(tablesContext.getDatabaseName().get(), is("sharding_db_1"));
     }
@@ -169,7 +182,7 @@ class TablesContextTest {
         SimpleTableSegment tableSegment2 = createTableSegment("table_1", 
"tbl_1");
         tableSegment2.setOwner(new OwnerSegment(0, 0, new 
IdentifierValue("sharding_db_2")));
         assertThrows(IllegalStateException.class,
-                () -> new TablesContext(Arrays.asList(tableSegment1, 
tableSegment2), TypedSPILoader.getService(DatabaseType.class, "FIXTURE"), 
DefaultDatabase.LOGIC_NAME).getDatabaseName());
+                () -> new TablesContext(Arrays.asList(tableSegment1, 
tableSegment2), databaseType, DefaultDatabase.LOGIC_NAME).getDatabaseName());
     }
     
     @Test
@@ -179,7 +192,7 @@ class TablesContextTest {
         SimpleTableSegment tableSegment2 = createTableSegment("table_2", 
"tbl_2");
         tableSegment2.setOwner(new OwnerSegment(0, 0, new 
IdentifierValue("sharding_db_2")));
         assertThrows(IllegalStateException.class,
-                () -> new TablesContext(Arrays.asList(tableSegment1, 
tableSegment2), TypedSPILoader.getService(DatabaseType.class, "FIXTURE"), 
DefaultDatabase.LOGIC_NAME).getDatabaseName());
+                () -> new TablesContext(Arrays.asList(tableSegment1, 
tableSegment2), databaseType, DefaultDatabase.LOGIC_NAME).getDatabaseName());
     }
     
     @Test
@@ -188,7 +201,7 @@ class TablesContextTest {
         tableSegment1.setOwner(new OwnerSegment(0, 0, new 
IdentifierValue("sharding_db_1")));
         SimpleTableSegment tableSegment2 = createTableSegment("table_2", 
"tbl_2");
         tableSegment2.setOwner(new OwnerSegment(0, 0, new 
IdentifierValue("sharding_db_1")));
-        TablesContext tablesContext = new 
TablesContext(Arrays.asList(tableSegment1, tableSegment2), 
TypedSPILoader.getService(DatabaseType.class, "FIXTURE"), 
DefaultDatabase.LOGIC_NAME);
+        TablesContext tablesContext = new 
TablesContext(Arrays.asList(tableSegment1, tableSegment2), databaseType, 
DefaultDatabase.LOGIC_NAME);
         assertTrue(tablesContext.getSchemaName().isPresent());
         assertThat(tablesContext.getSchemaName().get(), is("sharding_db_1"));
     }

Reply via email to