// Copyright 2010-2025 Google LLC // Licensed 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. import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertTrue; import com.google.ortools.Loader; import com.google.ortools.util.WrappersTestMessage; import java.util.List; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; /** Tests for Java SWIG proto wrappers. */ public class WrappersTestMessageTest { @BeforeEach public void setUp() { Loader.loadNativeLibraries(); } @Test public void testWrappers() { WrappersTestMessage msg = new WrappersTestMessage(); msg.setInt32Field(12); assertEquals(12, msg.getInt32Field()); msg.setInt64Field(123456789012345L); assertEquals(123456789012345L, msg.getInt64Field()); msg.setFloatField(3.14f); assertEquals(msg.getFloatField(), 3.14f, 1e-5f); msg.setStringField("test"); assertEquals("test", msg.getStringField()); // Enums are wrapped as nested classes by default in SWIG 4.0. msg.setEnumField(WrappersTestMessage.TestEnum.TEST_ENUM_VALUE1); assertEquals(WrappersTestMessage.TestEnum.TEST_ENUM_VALUE1, msg.getEnumField()); assertEquals("TEST_ENUM_VALUE1", WrappersTestMessage.TestEnum.TEST_ENUM_VALUE1.name()); msg.mutableNestedMessageField().setNestedIntField(42); assertEquals(42, msg.mutableNestedMessageField().getNestedIntField()); msg.setOneofString("test"); assertEquals("test", msg.getOneofString()); msg.clearOneofString(); assertEquals("", msg.getOneofString()); msg.getRepeatedInt32FieldList().append(1); msg.getRepeatedInt32FieldList().append(2); assertEquals(2, msg.getRepeatedInt32FieldList().size()); assertEquals(1, (int) msg.getRepeatedInt32FieldList().get(0)); assertEquals(2, (int) msg.getRepeatedInt32FieldList().get(1)); msg.getRepeatedStringFieldList().append("a"); msg.getRepeatedStringFieldList().append("b"); assertEquals(2, msg.getRepeatedStringFieldList().size()); assertEquals("a", msg.getRepeatedStringFieldList().get(0)); WrappersTestMessage.NestedMessage nested = msg.getRepeatedNestedMessageFieldList().add(); nested.setNestedIntField(100); assertEquals(100, msg.getRepeatedNestedMessageFieldList().get(0).getNestedIntField()); } @Test public void testListInterface() { WrappersTestMessage msg = new WrappersTestMessage(); List intList = msg.getRepeatedInt32FieldList(); intList.add(10); intList.add(20); assertEquals(2, intList.size()); assertEquals(Integer.valueOf(10), intList.get(0)); assertEquals(Integer.valueOf(20), intList.get(1)); intList.set(0, 15); assertEquals(Integer.valueOf(15), intList.get(0)); intList.remove(0); assertEquals(1, intList.size()); assertEquals(Integer.valueOf(20), intList.get(0)); List stringList = msg.getRepeatedStringFieldList(); stringList.add("first"); stringList.add("second"); assertEquals("first", stringList.get(0)); stringList.remove(0); assertEquals("second", stringList.get(0)); List msgList = msg.getRepeatedNestedMessageFieldList(); WrappersTestMessage.NestedMessage n = new WrappersTestMessage.NestedMessage(); n.setNestedIntField(5); msgList.add(n); assertEquals(1, msgList.size()); assertEquals(5, msgList.get(0).getNestedIntField()); } @Test public void testCopyFrom() { WrappersTestMessage msg1 = new WrappersTestMessage(); msg1.setInt32Field(10); WrappersTestMessage msg2 = new WrappersTestMessage(); msg2.copyFrom(msg1); assertEquals(10, msg2.getInt32Field()); } @Test public void testParseString() { WrappersTestMessage msg = new WrappersTestMessage(); msg.setInt32Field(123); String text = msg.toString(); WrappersTestMessage msg2 = new WrappersTestMessage(); assertTrue(msg2.parseTextFormat(text)); assertEquals(123, msg2.getInt32Field()); } @Test public void testEnum() { WrappersTestMessage msg = new WrappersTestMessage(); msg.setEnumField(WrappersTestMessage.TestEnum.TEST_ENUM_VALUE1); assertEquals("TEST_ENUM_VALUE1", msg.getEnumField().name()); assertEquals(WrappersTestMessage.TestEnum.TEST_ENUM_VALUE1, msg.getEnumField()); switch (msg.getEnumField()) { case WrappersTestMessage.TestEnum.TEST_ENUM_VALUE1 -> assertEquals(WrappersTestMessage.TestEnum.TEST_ENUM_VALUE1, msg.getEnumField()); case WrappersTestMessage.TestEnum.TEST_ENUM_VALUE2 -> assertEquals(WrappersTestMessage.TestEnum.TEST_ENUM_VALUE2, msg.getEnumField()); default -> assertEquals(WrappersTestMessage.TestEnum.TEST_ENUM_UNSPECIFIED, msg.getEnumField()); } } }