You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by du...@apache.org on 2022/09/09 04:51:35 UTC

[shardingsphere] branch master updated: [Issue #20364]-Improve coverage for DeleteStatementHandler (#20875)

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

duanzhengqiang 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 45c244b1161 [Issue #20364]-Improve coverage for DeleteStatementHandler (#20875)
45c244b1161 is described below

commit 45c244b1161ab966bb3e8bedc2f65b6f751873fa
Author: Abhinav Koppula <ab...@gmail.com>
AuthorDate: Fri Sep 9 10:21:24 2022 +0530

    [Issue #20364]-Improve coverage for DeleteStatementHandler (#20875)
---
 .../handler/dml/DeleteStatementHandlerTest.java    | 82 ++++++++++++++++++----
 1 file changed, 69 insertions(+), 13 deletions(-)

diff --git a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/dialect/handler/dml/DeleteStatementHandlerTest.java b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/dialect/handler/dml/DeleteStatementHandlerTest.java
index 7a42fd3929f..2f9b3ddbce0 100644
--- a/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/dialect/handler/dml/DeleteStatementHandlerTest.java
+++ b/shardingsphere-sql-parser/shardingsphere-sql-parser-statement/src/test/java/org/apache/shardingsphere/sql/parser/sql/dialect/handler/dml/DeleteStatementHandlerTest.java
@@ -17,46 +17,102 @@
 
 package org.apache.shardingsphere.sql.parser.sql.dialect.handler.dml;
 
+import static org.hamcrest.Matchers.is;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
+import java.util.LinkedList;
 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.order.OrderBySegment;
 import org.apache.shardingsphere.sql.parser.sql.common.segment.dml.pagination.limit.LimitSegment;
+import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.OutputSegment;
+import org.apache.shardingsphere.sql.parser.sql.common.segment.generic.WithSegment;
 import org.apache.shardingsphere.sql.parser.sql.dialect.statement.mysql.dml.MySQLDeleteStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.opengauss.dml.OpenGaussDeleteStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.oracle.dml.OracleDeleteStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.postgresql.dml.PostgreSQLDeleteStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sql92.dml.SQL92DeleteStatement;
+import org.apache.shardingsphere.sql.parser.sql.dialect.statement.sqlserver.dml.SQLServerDeleteStatement;
 import org.junit.Test;
 
 import java.util.Collections;
 import java.util.Optional;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
 public final class DeleteStatementHandlerTest {
     
     @Test
-    public void assertGetOrderBySegmentWithOrderBySegmentForMySQL() {
+    public void assertGetOrderBySegmentForMySQL() {
         MySQLDeleteStatement deleteStatement = new MySQLDeleteStatement();
         deleteStatement.setOrderBy(new OrderBySegment(0, 0, Collections.emptyList()));
         Optional<OrderBySegment> orderBySegment = DeleteStatementHandler.getOrderBySegment(deleteStatement);
         assertTrue(orderBySegment.isPresent());
+        assertThat(orderBySegment.get(), is(deleteStatement.getOrderBy().get()));
+        assertFalse(DeleteStatementHandler.getOrderBySegment(new MySQLDeleteStatement()).isPresent());
     }
     
     @Test
-    public void assertGetOrderBySegmentWithoutOrderBySegmentForMySQL() {
-        MySQLDeleteStatement deleteStatement = new MySQLDeleteStatement();
-        Optional<OrderBySegment> orderBySegment = DeleteStatementHandler.getOrderBySegment(deleteStatement);
-        assertFalse(orderBySegment.isPresent());
+    public void assertGetOrderBySegmentForOtherDatabases() {
+        assertFalse(DeleteStatementHandler.getOrderBySegment(new OpenGaussDeleteStatement()).isPresent());
+        assertFalse(DeleteStatementHandler.getOrderBySegment(new OracleDeleteStatement()).isPresent());
+        assertFalse(DeleteStatementHandler.getOrderBySegment(new PostgreSQLDeleteStatement()).isPresent());
+        assertFalse(DeleteStatementHandler.getOrderBySegment(new SQL92DeleteStatement()).isPresent());
+        assertFalse(DeleteStatementHandler.getOrderBySegment(new SQLServerDeleteStatement()).isPresent());
     }
     
     @Test
-    public void assertGetLimitSegmentWithLimitSegmentForMySQL() {
+    public void assertGetLimitSegmentForMySQL() {
         MySQLDeleteStatement deleteStatement = new MySQLDeleteStatement();
         deleteStatement.setLimit(new LimitSegment(0, 0, null, null));
         Optional<LimitSegment> limitSegment = DeleteStatementHandler.getLimitSegment(deleteStatement);
         assertTrue(limitSegment.isPresent());
+        assertThat(limitSegment.get(), is(deleteStatement.getLimit().get()));
+        assertFalse(DeleteStatementHandler.getLimitSegment(new MySQLDeleteStatement()).isPresent());
     }
     
     @Test
-    public void assertGetLimitSegmentWithoutLimitSegmentForMySQL() {
-        MySQLDeleteStatement deleteStatement = new MySQLDeleteStatement();
-        Optional<LimitSegment> limitSegment = DeleteStatementHandler.getLimitSegment(deleteStatement);
-        assertFalse(limitSegment.isPresent());
+    public void assertGetLimitSegmentForOtherDatabases() {
+        assertFalse(DeleteStatementHandler.getLimitSegment(new OpenGaussDeleteStatement()).isPresent());
+        assertFalse(DeleteStatementHandler.getLimitSegment(new OracleDeleteStatement()).isPresent());
+        assertFalse(DeleteStatementHandler.getLimitSegment(new PostgreSQLDeleteStatement()).isPresent());
+        assertFalse(DeleteStatementHandler.getLimitSegment(new SQL92DeleteStatement()).isPresent());
+        assertFalse(DeleteStatementHandler.getLimitSegment(new SQLServerDeleteStatement()).isPresent());
+    }
+    
+    @Test
+    public void assertGetOutputSegmentForSQLServer() {
+        SQLServerDeleteStatement deleteStatement = new SQLServerDeleteStatement();
+        deleteStatement.setOutputSegment(new OutputSegment(0, 0));
+        Optional<OutputSegment> outputSegment = DeleteStatementHandler.getOutputSegment(deleteStatement);
+        assertTrue(outputSegment.isPresent());
+        assertThat(outputSegment.get(), is(deleteStatement.getOutputSegment().get()));
+        assertFalse(DeleteStatementHandler.getOutputSegment(new SQLServerDeleteStatement()).isPresent());
+    }
+    
+    @Test
+    public void assertGetOutputSegmentForOtherDatabases() {
+        assertFalse(DeleteStatementHandler.getOutputSegment(new MySQLDeleteStatement()).isPresent());
+        assertFalse(DeleteStatementHandler.getOutputSegment(new OpenGaussDeleteStatement()).isPresent());
+        assertFalse(DeleteStatementHandler.getOutputSegment(new OracleDeleteStatement()).isPresent());
+        assertFalse(DeleteStatementHandler.getOutputSegment(new PostgreSQLDeleteStatement()).isPresent());
+        assertFalse(DeleteStatementHandler.getOutputSegment(new SQL92DeleteStatement()).isPresent());
+    }
+    
+    @Test
+    public void assertGetWithSegmentForSQLServer() {
+        SQLServerDeleteStatement deleteStatement = new SQLServerDeleteStatement();
+        deleteStatement.setWithSegment(new WithSegment(0, 0, new LinkedList<>()));
+        Optional<WithSegment> withSegment = DeleteStatementHandler.getWithSegment(deleteStatement);
+        assertTrue(withSegment.isPresent());
+        assertThat(withSegment.get(), is(deleteStatement.getWithSegment().get()));
+        assertFalse(DeleteStatementHandler.getWithSegment(new SQLServerDeleteStatement()).isPresent());
+    }
+    
+    @Test
+    public void assertGetWithSegmentForOtherDatabases() {
+        assertFalse(DeleteStatementHandler.getWithSegment(new MySQLDeleteStatement()).isPresent());
+        assertFalse(DeleteStatementHandler.getWithSegment(new OpenGaussDeleteStatement()).isPresent());
+        assertFalse(DeleteStatementHandler.getWithSegment(new OracleDeleteStatement()).isPresent());
+        assertFalse(DeleteStatementHandler.getWithSegment(new PostgreSQLDeleteStatement()).isPresent());
+        assertFalse(DeleteStatementHandler.getWithSegment(new SQL92DeleteStatement()).isPresent());
     }
 }