diff --git a/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/binary/bind/protocol/PostgreSQLBinaryProtocolValueFactoryTest.java b/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/binary/bind/protocol/PostgreSQLBinaryProtocolValueFactoryTest.java new file mode 100644 index 0000000000000000000000000000000000000000..d73ed72aa0709c3d245cf6537b7395e9e692881d --- /dev/null +++ b/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/binary/bind/protocol/PostgreSQLBinaryProtocolValueFactoryTest.java @@ -0,0 +1,80 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.binary.bind.protocol; + +import org.apache.shardingsphere.db.protocol.postgresql.constant.PostgreSQLColumnType; +import org.junit.Assert; +import org.junit.Test; + +import static org.hamcrest.CoreMatchers.instanceOf; + +public class PostgreSQLBinaryProtocolValueFactoryTest { + + @Test + public void assertGetStringBinaryProtocolValue() { + PostgreSQLBinaryProtocolValue binaryProtocolValue = PostgreSQLBinaryProtocolValueFactory.getBinaryProtocolValue(PostgreSQLColumnType.POSTGRESQL_TYPE_VARCHAR); + Assert.assertThat(binaryProtocolValue, instanceOf(PostgreSQLStringBinaryProtocolValue.class)); + } + + @Test + public void assertGetInt8BinaryProtocolValue() { + PostgreSQLBinaryProtocolValue binaryProtocolValue = PostgreSQLBinaryProtocolValueFactory.getBinaryProtocolValue(PostgreSQLColumnType.POSTGRESQL_TYPE_INT8); + Assert.assertThat(binaryProtocolValue, instanceOf(PostgreSQLInt8BinaryProtocolValue.class)); + } + + @Test + public void assertGetInt4BinaryProtocolValue() { + PostgreSQLBinaryProtocolValue binaryProtocolValue = PostgreSQLBinaryProtocolValueFactory.getBinaryProtocolValue(PostgreSQLColumnType.POSTGRESQL_TYPE_INT4); + Assert.assertThat(binaryProtocolValue, instanceOf(PostgreSQLInt4BinaryProtocolValue.class)); + } + + @Test + public void assertGetInt2BinaryProtocolValue() { + PostgreSQLBinaryProtocolValue binaryProtocolValue = PostgreSQLBinaryProtocolValueFactory.getBinaryProtocolValue(PostgreSQLColumnType.POSTGRESQL_TYPE_INT2); + Assert.assertThat(binaryProtocolValue, instanceOf(PostgreSQLInt2BinaryProtocolValue.class)); + } + + @Test + public void assertGetDoubleBinaryProtocolValue() { + PostgreSQLBinaryProtocolValue binaryProtocolValue = PostgreSQLBinaryProtocolValueFactory.getBinaryProtocolValue(PostgreSQLColumnType.POSTGRESQL_TYPE_FLOAT8); + Assert.assertThat(binaryProtocolValue, instanceOf(PostgreSQLDoubleBinaryProtocolValue.class)); + } + + @Test + public void assertGetFloatBinaryProtocolValue() { + PostgreSQLBinaryProtocolValue binaryProtocolValue = PostgreSQLBinaryProtocolValueFactory.getBinaryProtocolValue(PostgreSQLColumnType.POSTGRESQL_TYPE_FLOAT4); + Assert.assertThat(binaryProtocolValue, instanceOf(PostgreSQLFloatBinaryProtocolValue.class)); + } + + @Test + public void assertGetDateBinaryProtocolValue() { + PostgreSQLBinaryProtocolValue binaryProtocolValue = PostgreSQLBinaryProtocolValueFactory.getBinaryProtocolValue(PostgreSQLColumnType.POSTGRESQL_TYPE_DATE); + Assert.assertThat(binaryProtocolValue, instanceOf(PostgreSQLDateBinaryProtocolValue.class)); + } + + @Test + public void assertGetTimeBinaryProtocolValue() { + PostgreSQLBinaryProtocolValue binaryProtocolValue = PostgreSQLBinaryProtocolValueFactory.getBinaryProtocolValue(PostgreSQLColumnType.POSTGRESQL_TYPE_TIMESTAMP); + Assert.assertThat(binaryProtocolValue, instanceOf(PostgreSQLTimeBinaryProtocolValue.class)); + } + + @Test(expected = IllegalArgumentException.class) + public void assertGetBinaryProtocolValueExThrown() { + PostgreSQLBinaryProtocolValueFactory.getBinaryProtocolValue(PostgreSQLColumnType.POSTGRESQL_TYPE_XML); + } +} diff --git a/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/binary/bind/protocol/PostgreSQLDateBinaryProtocolValueTest.java b/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/binary/bind/protocol/PostgreSQLDateBinaryProtocolValueTest.java new file mode 100644 index 0000000000000000000000000000000000000000..9c187b478b8092ccbde34067aabcf8b68b38cf30 --- /dev/null +++ b/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/binary/bind/protocol/PostgreSQLDateBinaryProtocolValueTest.java @@ -0,0 +1,56 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.binary.bind.protocol; + +import org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacketPayload; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; + +import java.sql.Timestamp; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@RunWith(MockitoJUnitRunner.class) +public class PostgreSQLDateBinaryProtocolValueTest { + + @Mock + private PostgreSQLPacketPayload payload; + + @Test + public void assertGetColumnLength() { + assertThat(new PostgreSQLDateBinaryProtocolValue().getColumnLength(""), is(8)); + } + + @Test + public void assertRead() { + when(payload.readInt8()).thenReturn(1L); + assertThat(new PostgreSQLDateBinaryProtocolValue().read(payload), is(1L)); + } + + @Test + public void assertWrite() { + Timestamp data = new Timestamp(System.currentTimeMillis()); + new PostgreSQLDateBinaryProtocolValue().write(payload, data); + verify(payload).writeInt8(data.getTime()); + } +} diff --git a/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/binary/bind/protocol/PostgreSQLDoubleBinaryProtocolValueTest.java b/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/binary/bind/protocol/PostgreSQLDoubleBinaryProtocolValueTest.java new file mode 100644 index 0000000000000000000000000000000000000000..75fcae6bf9e66e300cb45c7138b62805fd281f12 --- /dev/null +++ b/shardingsphere-db-protocol/shardingsphere-db-protocol-postgresql/src/test/java/org/apache/shardingsphere/db/protocol/postgresql/packet/command/query/binary/bind/protocol/PostgreSQLDoubleBinaryProtocolValueTest.java @@ -0,0 +1,54 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.shardingsphere.db.protocol.postgresql.packet.command.query.binary.bind.protocol; + +import io.netty.buffer.ByteBuf; +import org.apache.shardingsphere.db.protocol.postgresql.payload.PostgreSQLPacketPayload; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnitRunner; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@RunWith(MockitoJUnitRunner.class) +public class PostgreSQLDoubleBinaryProtocolValueTest { + + @Mock + private ByteBuf byteBuf; + + @Test + public void assertGetColumnLength() { + assertThat(new PostgreSQLDoubleBinaryProtocolValue().getColumnLength(""), is(8)); + } + + @Test + public void assertRead() { + when(byteBuf.readDouble()).thenReturn(1D); + assertThat(new PostgreSQLDoubleBinaryProtocolValue().read(new PostgreSQLPacketPayload(byteBuf)), is(1D)); + } + + @Test + public void assertWrite() { + new PostgreSQLDoubleBinaryProtocolValue().write(new PostgreSQLPacketPayload(byteBuf), 1D); + verify(byteBuf).writeDouble(1.0d); + } +}