Yilun Chong 8 жил өмнө
parent
commit
5085102d96

+ 0 - 188
conformance/conformance_objc.m~

@@ -1,188 +0,0 @@
-// Protocol Buffers - Google's data interchange format
-// Copyright 2015 Google Inc.  All rights reserved.
-// https://developers.google.com/protocol-buffers/
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are
-// met:
-//
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * Redistributions in binary form must reproduce the above
-// copyright notice, this list of conditions and the following disclaimer
-// in the documentation and/or other materials provided with the
-// distribution.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-#import <Foundation/Foundation.h>
-
-#import "Conformance.pbobjc.h"
-#import "google/protobuf/TestMessagesProto3.pbobjc.h"
-
-static void Die(NSString *format, ...) __dead2;
-
-static BOOL verbose = NO;
-static int32_t testCount = 0;
-
-static void Die(NSString *format, ...) {
-  va_list args;
-  va_start(args, format);
-  NSString *msg = [[NSString alloc] initWithFormat:format arguments:args];
-  NSLog(@"%@", msg);
-  va_end(args);
-  [msg release];
-  exit(66);
-}
-
-static NSData *CheckedReadDataOfLength(NSFileHandle *handle, NSUInteger numBytes) {
-  NSData *data = [handle readDataOfLength:numBytes];
-  NSUInteger dataLen = data.length;
-  if (dataLen == 0) {
-    return nil;  // EOF.
-  }
-  if (dataLen != numBytes) {
-    Die(@"Failed to read the request length (%d), only got: %@",
-        numBytes, data);
-  }
-  return data;
-}
-
-static ConformanceResponse *DoTest(ConformanceRequest *request) {
-  ConformanceResponse *response = [ConformanceResponse message];
-  TestAllTypesProto3 *testMessage = nil;
-
-  switch (request.payloadOneOfCase) {
-    case ConformanceRequest_Payload_OneOfCase_GPBUnsetOneOfCase:
-      Die(@"Request didn't have a payload: %@", request);
-      break;
-
-    case ConformanceRequest_Payload_OneOfCase_ProtobufPayload: {
-      if ([request.messageType isEqualToString:@"protobuf_test_messages.proto3.TestAllTypesProto3"]) {
-        NSError *error = nil;
-        testMessage = [TestAllTypesProto3 parseFromData:request.protobufPayload
-                                            error:&error];
-        if (!testMessage) {
-          response.parseError =
-              [NSString stringWithFormat:@"Parse error: %@", error];
-        }
-      } else if ([request.messageType isEqualToString:@"protobuf_test_messages.proto2.TestAllTypesProto2"]) {
-	response.skipped = @"ObjC doesn't support proto2";
-	break;
-      } else {
-	Die(@"Protobuf request doesn't have specific payload type");
-	break;
-      }
-      break;
-    }
-
-    case ConformanceRequest_Payload_OneOfCase_JsonPayload:
-      response.skipped = @"ObjC doesn't support parsing JSON";
-      break;
-  }
-
-  if (testMessage) {
-    switch (request.requestedOutputFormat) {
-      case WireFormat_GPBUnrecognizedEnumeratorValue:
-      case WireFormat_Unspecified:
-        Die(@"Unrecognized/unspecified output format: %@", request);
-        break;
-
-      case WireFormat_Protobuf:
-        response.protobufPayload = testMessage.data;
-        if (!response.protobufPayload) {
-          response.serializeError =
-            [NSString stringWithFormat:@"Failed to make data from: %@", testMessage];
-        }
-        break;
-
-      case WireFormat_Json:
-        response.skipped = @"ObjC doesn't support generating JSON";
-        break;
-    }
-  }
-
-  return response;
-}
-
-static uint32_t UInt32FromLittleEndianData(NSData *data) {
-  if (data.length != sizeof(uint32_t)) {
-    Die(@"Data not the right size for uint32_t: %@", data);
-  }
-  uint32_t value;
-  memcpy(&value, data.bytes, sizeof(uint32_t));
-  return CFSwapInt32LittleToHost(value);
-}
-
-static NSData *UInt32ToLittleEndianData(uint32_t num) {
-  uint32_t value = CFSwapInt32HostToLittle(num);
-  return [NSData dataWithBytes:&value length:sizeof(uint32_t)];
-}
-
-static BOOL DoTestIo(NSFileHandle *input, NSFileHandle *output) {
-  // See conformance_test_runner.cc for the wire format.
-  NSData *data = CheckedReadDataOfLength(input, sizeof(uint32_t));
-  if (!data) {
-    // EOF.
-    return NO;
-  }
-  uint32_t numBytes = UInt32FromLittleEndianData(data);
-  data = CheckedReadDataOfLength(input, numBytes);
-  if (!data) {
-    Die(@"Failed to read request");
-  }
-
-  NSError *error = nil;
-  ConformanceRequest *request = [ConformanceRequest parseFromData:data
-                                                            error:&error];
-  if (!request) {
-    Die(@"Failed to parse the message data: %@", error);
-  }
-
-  ConformanceResponse *response = DoTest(request);
-  if (!response) {
-    Die(@"Failed to make a reply from %@", request);
-  }
-
-  data = response.data;
-  [output writeData:UInt32ToLittleEndianData((int32_t)data.length)];
-  [output writeData:data];
-
-  if (verbose) {
-    NSLog(@"Request: %@", request);
-    NSLog(@"Response: %@", response);
-  }
-
-  ++testCount;
-  return YES;
-}
-
-int main(int argc, const char *argv[]) {
-  @autoreleasepool {
-    NSFileHandle *input = [[NSFileHandle fileHandleWithStandardInput] retain];
-    NSFileHandle *output = [[NSFileHandle fileHandleWithStandardOutput] retain];
-
-    BOOL notDone = YES;
-    while (notDone) {
-      @autoreleasepool {
-        notDone = DoTestIo(input, output);
-      }
-    }
-
-    NSLog(@"Received EOF from test runner after %d tests, exiting.", testCount);
-  }
-  return 0;
-}

+ 0 - 119
conformance/conformance_php.php~

@@ -1,119 +0,0 @@
-<?php
-
-require_once("Conformance/WireFormat.php");
-require_once("Conformance/ConformanceResponse.php");
-require_once("Conformance/ConformanceRequest.php");
-require_once("Google/Protobuf/Any.php");
-require_once("Google/Protobuf/Duration.php");
-require_once("Google/Protobuf/FieldMask.php");
-require_once("Google/Protobuf/Struct.php");
-require_once("Google/Protobuf/Value.php");
-require_once("Google/Protobuf/ListValue.php");
-require_once("Google/Protobuf/NullValue.php");
-require_once("Google/Protobuf/Timestamp.php");
-require_once("Google/Protobuf/DoubleValue.php");
-require_once("Google/Protobuf/BytesValue.php");
-require_once("Google/Protobuf/FloatValue.php");
-require_once("Google/Protobuf/Int64Value.php");
-require_once("Google/Protobuf/UInt32Value.php");
-require_once("Google/Protobuf/BoolValue.php");
-require_once("Google/Protobuf/DoubleValue.php");
-require_once("Google/Protobuf/Int32Value.php");
-require_once("Google/Protobuf/StringValue.php");
-require_once("Google/Protobuf/UInt64Value.php");
-require_once("Protobuf_test_messages/Proto3/ForeignMessage.php");
-require_once("Protobuf_test_messages/Proto3/ForeignEnum.php");
-require_once("Protobuf_test_messages/Proto3/TestAllTypes.php");
-require_once("Protobuf_test_messages/Proto3/TestAllTypes_NestedMessage.php");
-require_once("Protobuf_test_messages/Proto3/TestAllTypes_NestedEnum.php");
-
-require_once("GPBMetadata/Conformance.php");
-require_once("GPBMetadata/Google/Protobuf/Any.php");
-require_once("GPBMetadata/Google/Protobuf/Duration.php");
-require_once("GPBMetadata/Google/Protobuf/FieldMask.php");
-require_once("GPBMetadata/Google/Protobuf/Struct.php");
-require_once("GPBMetadata/Google/Protobuf/Timestamp.php");
-require_once("GPBMetadata/Google/Protobuf/Wrappers.php");
-require_once("GPBMetadata/Google/Protobuf/TestMessagesProto3.php");
-
-use  \Conformance\WireFormat;
-
-$test_count = 0;
-
-function doTest($request)
-{
-    $test_message = new \Protobuf_test_messages\Proto3\TestAllTypes();
-    $response = new \Conformance\ConformanceResponse();
-    if ($request->getPayload() == "protobuf_payload") {
-      if ($request->getMessageType() == "protobuf_test_messages.proto3.TestAllTypes") {
-        try {
-          $test_message->mergeFromString($request->getProtobufPayload());
-        } catch (Exception $e) {
-          $response->setParseError($e->getMessage());
-          return $response;
-        }
-      } elseif ($request->getMessageType() == "protobuf_test_messages.proto2.TestAllTypesProto2") {
-	$response->setSkipped("PHP doesn't support proto2");
-	return $response;
-      } else {
-	trigger_error("Protobuf request doesn't have specific payload type", E_USER_ERROR);
-      }
-    } elseif ($request->getPayload() == "json_payload") {
-      try {
-          $test_message->jsonDecode($request->getJsonPayload());
-      } catch (Exception $e) {
-          $response->setParseError($e->getMessage());
-          return $response;
-      }
-    } else {
-      trigger_error("Request didn't have payload.", E_USER_ERROR);
-    }
-
-    if ($request->getRequestedOutputFormat() == WireFormat::UNSPECIFIED) {
-      trigger_error("Unspecified output format.", E_USER_ERROR);
-    } elseif ($request->getRequestedOutputFormat() == WireFormat::PROTOBUF) {
-      $response->setProtobufPayload($test_message->serializeToString());
-    } elseif ($request->getRequestedOutputFormat() == WireFormat::JSON) {
-      $response->setJsonPayload($test_message->jsonEncode());
-    }
-
-    return $response;
-}
-
-function doTestIO()
-{
-    $length_bytes = fread(STDIN, 4);
-    if (strlen($length_bytes) == 0) {
-      return false;   # EOF
-    } elseif (strlen($length_bytes) != 4) {
-      trigger_error("I/O error", E_USER_ERROR);
-    }
-
-    $length = unpack("V", $length_bytes)[1];
-    $serialized_request = fread(STDIN, $length);
-    if (strlen($serialized_request) != $length) {
-      trigger_error("I/O error", E_USER_ERROR);
-    }
-
-    $request = new \Conformance\ConformanceRequest();
-    $request->mergeFromString($serialized_request);
-
-    $response = doTest($request);
-
-    $serialized_response = $response->serializeToString();
-    fwrite(STDOUT, pack("V", strlen($serialized_response)));
-    fwrite(STDOUT, $serialized_response);
-
-    $GLOBALS['test_count'] += 1;
-
-    return true;
-}
-
-while(true){
-  if (!doTestIO()) {
-      fprintf(STDERR,
-             "conformance_php: received EOF from test runner " +
-             "after %d tests, exiting\n", $test_count);
-      exit;
-  }
-}

+ 0 - 131
conformance/conformance_ruby.rb~

@@ -1,131 +0,0 @@
-#!/usr/bin/env ruby
-#
-# Protocol Buffers - Google's data interchange format
-# Copyright 2008 Google Inc.  All rights reserved.
-# https://developers.google.com/protocol-buffers/
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions are
-# met:
-#
-#     * Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#     * Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following disclaimer
-# in the documentation and/or other materials provided with the
-# distribution.
-#     * Neither the name of Google Inc. nor the names of its
-# contributors may be used to endorse or promote products derived from
-# this software without specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-require 'conformance_pb'
-require 'google/protobuf/test_messages_proto3_pb'
-
-$test_count = 0
-$verbose = false
-
-def do_test(request)
-  test_message = ProtobufTestMessages::Proto3::TestAllTypesProto3.new
-  response = Conformance::ConformanceResponse.new
-
-  begin
-    case request.payload
-    when :protobuf_payload
-      if request.message_type.eql?('protobuf_test_messages.proto3.TestAllTypesProto3')
-        begin
-          test_message = ProtobufTestMessages::Proto3::TestAllTypesProto3.decode(
-              request.protobuf_payload)
-        rescue Google::Protobuf::ParseError => err
-          response.parse_error = err.message.encode('utf-8')
-          return response
-        end
-      elsif request.message_type.eql?('protobuf_test_messages.proto2.TestAllTypesProto2')
-        response.skipped = "Ruby doesn't support proto2"
-        return response
-      else 
-        fail "Protobuf request doesn't have specific payload type"
-      end
-
-    when :json_payload
-      begin
-        test_message = ProtobufTestMessages::Proto3::TestAllTypesProto3.decode_json(
-            request.json_payload)
-      rescue Google::Protobuf::ParseError => err
-        response.parse_error = err.message.encode('utf-8')
-        return response
-      end
-
-    when nil
-      fail "Request didn't have payload"
-    end
-
-    case request.requested_output_format
-    when :UNSPECIFIED
-      fail 'Unspecified output format'
-
-    when :PROTOBUF
-      response.protobuf_payload = test_message.to_proto
-
-    when :JSON
-      response.json_payload = test_message.to_json
-
-    when nil
-      fail "Request didn't have requested output format"
-    end
-  rescue StandardError => err
-    response.runtime_error = err.message.encode('utf-8')
-  end
-
-  response
-end
-
-# Returns true if the test ran successfully, false on legitimate EOF.
-# If EOF is encountered in an unexpected place, raises IOError.
-def do_test_io
-  length_bytes = STDIN.read(4)
-  return false if length_bytes.nil?
-
-  length = length_bytes.unpack('V').first
-  serialized_request = STDIN.read(length)
-  if serialized_request.nil? || serialized_request.length != length
-    fail IOError
-  end
-
-  request = Conformance::ConformanceRequest.decode(serialized_request)
-
-  response = do_test(request)
-
-  serialized_response = Conformance::ConformanceResponse.encode(response)
-  STDOUT.write([serialized_response.length].pack('V'))
-  STDOUT.write(serialized_response)
-  STDOUT.flush
-
-  if $verbose
-    STDERR.puts("conformance_ruby: request=#{request.to_json}, " \
-                                 "response=#{response.to_json}\n")
-  end
-
-  $test_count += 1
-
-  true
-end
-
-loop do
-  unless do_test_io
-    STDERR.puts('conformance_ruby: received EOF from test runner ' \
-                "after #{$test_count} tests, exiting")
-    break
-  end
-end