| OLD | NEW |
| 1 // Protocol Buffers - Google's data interchange format | 1 // Protocol Buffers - Google's data interchange format |
| 2 // Copyright 2008 Google Inc. All rights reserved. | 2 // Copyright 2008 Google Inc. All rights reserved. |
| 3 // https://developers.google.com/protocol-buffers/ | 3 // http://code.google.com/p/protobuf/ |
| 4 // | 4 // |
| 5 // Redistribution and use in source and binary forms, with or without | 5 // Redistribution and use in source and binary forms, with or without |
| 6 // modification, are permitted provided that the following conditions are | 6 // modification, are permitted provided that the following conditions are |
| 7 // met: | 7 // met: |
| 8 // | 8 // |
| 9 // * Redistributions of source code must retain the above copyright | 9 // * Redistributions of source code must retain the above copyright |
| 10 // notice, this list of conditions and the following disclaimer. | 10 // notice, this list of conditions and the following disclaimer. |
| 11 // * Redistributions in binary form must reproduce the above | 11 // * Redistributions in binary form must reproduce the above |
| 12 // copyright notice, this list of conditions and the following disclaimer | 12 // copyright notice, this list of conditions and the following disclaimer |
| 13 // in the documentation and/or other materials provided with the | 13 // in the documentation and/or other materials provided with the |
| 14 // distribution. | 14 // distribution. |
| 15 // * Neither the name of Google Inc. nor the names of its | 15 // * Neither the name of Google Inc. nor the names of its |
| 16 // contributors may be used to endorse or promote products derived from | 16 // contributors may be used to endorse or promote products derived from |
| 17 // this software without specific prior written permission. | 17 // this software without specific prior written permission. |
| 18 // | 18 // |
| 19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | 19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| 20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | 20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| 21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | 21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| 22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | 22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| 23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | 23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| 24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | 24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| 25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| 26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 30 | 30 |
| 31 package com.google.protobuf; | 31 package com.google.protobuf.test; |
| 32 import com.google.protobuf.*; |
| 32 | 33 |
| 33 import com.google.protobuf.Descriptors.FileDescriptor; | 34 import com.google.protobuf.Descriptors.FileDescriptor; |
| 34 import com.google.protobuf.Descriptors.MethodDescriptor; | 35 import com.google.protobuf.Descriptors.MethodDescriptor; |
| 35 import google.protobuf.no_generic_services_test.UnittestNoGenericServices; | 36 import google.protobuf.no_generic_services_test.UnittestNoGenericServices; |
| 36 import protobuf_unittest.MessageWithNoOuter; | 37 import protobuf_unittest.MessageWithNoOuter; |
| 37 import protobuf_unittest.ServiceWithNoOuter; | 38 import protobuf_unittest.ServiceWithNoOuter; |
| 39 import protobuf_unittest.UnittestProto.TestAllTypes; |
| 40 import protobuf_unittest.UnittestProto.TestService; |
| 41 import protobuf_unittest.UnittestProto.FooRequest; |
| 42 import protobuf_unittest.UnittestProto.FooResponse; |
| 38 import protobuf_unittest.UnittestProto.BarRequest; | 43 import protobuf_unittest.UnittestProto.BarRequest; |
| 39 import protobuf_unittest.UnittestProto.BarResponse; | 44 import protobuf_unittest.UnittestProto.BarResponse; |
| 40 import protobuf_unittest.UnittestProto.FooRequest; | |
| 41 import protobuf_unittest.UnittestProto.FooResponse; | |
| 42 import protobuf_unittest.UnittestProto.TestAllTypes; | |
| 43 import protobuf_unittest.UnittestProto.TestService; | |
| 44 | |
| 45 import junit.framework.TestCase; | |
| 46 | 45 |
| 47 import org.easymock.classextension.EasyMock; | 46 import org.easymock.classextension.EasyMock; |
| 47 import org.easymock.classextension.IMocksControl; |
| 48 import org.easymock.IArgumentMatcher; | 48 import org.easymock.IArgumentMatcher; |
| 49 import org.easymock.classextension.IMocksControl; | |
| 50 | 49 |
| 51 import java.util.HashSet; | 50 import java.util.HashSet; |
| 52 import java.util.Set; | 51 import java.util.Set; |
| 53 | 52 |
| 53 import junit.framework.TestCase; |
| 54 |
| 54 /** | 55 /** |
| 55 * Tests services and stubs. | 56 * Tests services and stubs. |
| 56 * | 57 * |
| 57 * @author kenton@google.com Kenton Varda | 58 * @author kenton@google.com Kenton Varda |
| 58 */ | 59 */ |
| 59 public class ServiceTest extends TestCase { | 60 public class ServiceTest extends TestCase { |
| 60 private IMocksControl control; | 61 private IMocksControl control; |
| 61 private RpcController mockController; | 62 private RpcController mockController; |
| 62 | 63 |
| 63 private final Descriptors.MethodDescriptor fooDescriptor = | 64 private final Descriptors.MethodDescriptor fooDescriptor = |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 168 | 169 |
| 169 public void testNewReflectiveService() { | 170 public void testNewReflectiveService() { |
| 170 ServiceWithNoOuter.Interface impl = | 171 ServiceWithNoOuter.Interface impl = |
| 171 control.createMock(ServiceWithNoOuter.Interface.class); | 172 control.createMock(ServiceWithNoOuter.Interface.class); |
| 172 RpcController controller = control.createMock(RpcController.class); | 173 RpcController controller = control.createMock(RpcController.class); |
| 173 Service service = ServiceWithNoOuter.newReflectiveService(impl); | 174 Service service = ServiceWithNoOuter.newReflectiveService(impl); |
| 174 | 175 |
| 175 MethodDescriptor fooMethod = | 176 MethodDescriptor fooMethod = |
| 176 ServiceWithNoOuter.getDescriptor().findMethodByName("Foo"); | 177 ServiceWithNoOuter.getDescriptor().findMethodByName("Foo"); |
| 177 MessageWithNoOuter request = MessageWithNoOuter.getDefaultInstance(); | 178 MessageWithNoOuter request = MessageWithNoOuter.getDefaultInstance(); |
| 178 RpcCallback<Message> callback = | 179 RpcCallback<Message> callback = new RpcCallback<Message>() { |
| 179 new RpcCallback<Message>() { | 180 public void run(Message parameter) { |
| 180 @Override | 181 // No reason this should be run. |
| 181 public void run(Message parameter) { | 182 fail(); |
| 182 // No reason this should be run. | 183 } |
| 183 fail(); | 184 }; |
| 184 } | |
| 185 }; | |
| 186 RpcCallback<TestAllTypes> specializedCallback = | 185 RpcCallback<TestAllTypes> specializedCallback = |
| 187 RpcUtil.specializeCallback(callback); | 186 RpcUtil.specializeCallback(callback); |
| 188 | 187 |
| 189 impl.foo(EasyMock.same(controller), EasyMock.same(request), | 188 impl.foo(EasyMock.same(controller), EasyMock.same(request), |
| 190 EasyMock.same(specializedCallback)); | 189 EasyMock.same(specializedCallback)); |
| 191 EasyMock.expectLastCall(); | 190 EasyMock.expectLastCall(); |
| 192 | 191 |
| 193 control.replay(); | 192 control.replay(); |
| 194 | 193 |
| 195 service.callMethod(fooMethod, controller, request, callback); | 194 service.callMethod(fooMethod, controller, request, callback); |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 285 } | 284 } |
| 286 | 285 |
| 287 /** The parameter to wrapsCallback() must be a MockCallback. */ | 286 /** The parameter to wrapsCallback() must be a MockCallback. */ |
| 288 private static class MockCallback<Type extends Message> | 287 private static class MockCallback<Type extends Message> |
| 289 implements RpcCallback<Type> { | 288 implements RpcCallback<Type> { |
| 290 private boolean called = false; | 289 private boolean called = false; |
| 291 | 290 |
| 292 public boolean isCalled() { return called; } | 291 public boolean isCalled() { return called; } |
| 293 | 292 |
| 294 public void reset() { called = false; } | 293 public void reset() { called = false; } |
| 295 @Override | 294 public void run(Type message) { called = true; } |
| 296 public void run(Type message) { | |
| 297 called = true; } | |
| 298 } | 295 } |
| 299 | 296 |
| 300 /** Implementation of the wrapsCallback() argument matcher. */ | 297 /** Implementation of the wrapsCallback() argument matcher. */ |
| 301 private static class WrapsCallback implements IArgumentMatcher { | 298 private static class WrapsCallback implements IArgumentMatcher { |
| 302 private MockCallback<?> callback; | 299 private MockCallback<?> callback; |
| 303 | 300 |
| 304 public WrapsCallback(MockCallback<?> callback) { | 301 public WrapsCallback(MockCallback<?> callback) { |
| 305 this.callback = callback; | 302 this.callback = callback; |
| 306 } | 303 } |
| 307 | 304 |
| 308 @Override | |
| 309 @SuppressWarnings("unchecked") | 305 @SuppressWarnings("unchecked") |
| 310 public boolean matches(Object actual) { | 306 public boolean matches(Object actual) { |
| 311 if (!(actual instanceof RpcCallback)) { | 307 if (!(actual instanceof RpcCallback)) { |
| 312 return false; | 308 return false; |
| 313 } | 309 } |
| 314 RpcCallback actualCallback = (RpcCallback)actual; | 310 RpcCallback actualCallback = (RpcCallback)actual; |
| 315 | 311 |
| 316 callback.reset(); | 312 callback.reset(); |
| 317 actualCallback.run(null); | 313 actualCallback.run(null); |
| 318 return callback.isCalled(); | 314 return callback.isCalled(); |
| 319 } | 315 } |
| 320 | 316 |
| 321 @Override | |
| 322 public void appendTo(StringBuffer buffer) { | 317 public void appendTo(StringBuffer buffer) { |
| 323 buffer.append("wrapsCallback(mockCallback)"); | 318 buffer.append("wrapsCallback(mockCallback)"); |
| 324 } | 319 } |
| 325 } | 320 } |
| 326 } | 321 } |
| OLD | NEW |