# # 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. # require 'thrift' module Fixtures module Structs class OneBool include Thrift::Struct attr_accessor :bool FIELDS = { 1 => {:type => Thrift::Types::BOOL, :name => 'bool'} } def validate end end class OneByte include Thrift::Struct attr_accessor :byte FIELDS = { 1 => {:type => Thrift::Types::BYTE, :name => 'byte'} } def validate end end class OneI16 include Thrift::Struct attr_accessor :i16 FIELDS = { 1 => {:type => Thrift::Types::I16, :name => 'i16'} } def validate end end class OneI32 include Thrift::Struct attr_accessor :i32 FIELDS = { 1 => {:type => Thrift::Types::I32, :name => 'i32'} } def validate end end class OneI64 include Thrift::Struct attr_accessor :i64 FIELDS = { 1 => {:type => Thrift::Types::I64, :name => 'i64'} } def validate end end class OneDouble include Thrift::Struct attr_accessor :double FIELDS = { 1 => {:type => Thrift::Types::DOUBLE, :name => 'double'} } def validate end end class OneString include Thrift::Struct attr_accessor :string FIELDS = { 1 => {:type => Thrift::Types::STRING, :name => 'string'} } def validate end end class OneMap include Thrift::Struct attr_accessor :map FIELDS = { 1 => {:type => Thrift::Types::MAP, :name => 'map', :key => {:type => Thrift::Types::STRING}, :value => {:type => Thrift::Types::STRING}} } def validate end end class NestedMap include Thrift::Struct attr_accessor :map FIELDS = { 0 => {:type => Thrift::Types::MAP, :name => 'map', :key => {:type => Thrift::Types::I32}, :value => {:type => Thrift::Types::MAP, :key => {:type => Thrift::Types::I32}, :value => {:type => Thrift::Types::I32}}} } def validate end end class OneList include Thrift::Struct attr_accessor :list FIELDS = { 1 => {:type => Thrift::Types::LIST, :name => 'list', :element => {:type => Thrift::Types::STRING}} } def validate end end class NestedList include Thrift::Struct attr_accessor :list FIELDS = { 0 => {:type => Thrift::Types::LIST, :name => 'list', :element => {:type => Thrift::Types::LIST, :element => { :type => Thrift::Types::I32 } } } } def validate end end class OneSet include Thrift::Struct attr_accessor :set FIELDS = { 1 => {:type => Thrift::Types::SET, :name => 'set', :element => {:type => Thrift::Types::STRING}} } def validate end end class NestedSet include Thrift::Struct attr_accessor :set FIELDS = { 1 => {:type => Thrift::Types::SET, :name => 'set', :element => {:type => Thrift::Types::SET, :element => { :type => Thrift::Types::STRING } }} } def validate end end # struct OneOfEach { # 1: bool im_true, # 2: bool im_false, # 3: byte a_bite, # 4: i16 integer16, # 5: i32 integer32, # 6: i64 integer64, # 7: double double_precision, # 8: string some_characters, # 9: string zomg_unicode, # 10: bool what_who, # 11: binary base64, # } class OneOfEach include Thrift::Struct attr_accessor :im_true, :im_false, :a_bite, :integer16, :integer32, :integer64, :double_precision, :some_characters, :zomg_unicode, :what_who, :base64 FIELDS = { 1 => {:type => Thrift::Types::BOOL, :name => 'im_true'}, 2 => {:type => Thrift::Types::BOOL, :name => 'im_false'}, 3 => {:type => Thrift::Types::BYTE, :name => 'a_bite'}, 4 => {:type => Thrift::Types::I16, :name => 'integer16'}, 5 => {:type => Thrift::Types::I32, :name => 'integer32'}, 6 => {:type => Thrift::Types::I64, :name => 'integer64'}, 7 => {:type => Thrift::Types::DOUBLE, :name => 'double_precision'}, 8 => {:type => Thrift::Types::STRING, :name => 'some_characters'}, 9 => {:type => Thrift::Types::STRING, :name => 'zomg_unicode'}, 10 => {:type => Thrift::Types::BOOL, :name => 'what_who'}, 11 => {:type => Thrift::Types::STRING, :name => 'base64'} } # Added for assert_equal def ==(other) [:im_true, :im_false, :a_bite, :integer16, :integer32, :integer64, :double_precision, :some_characters, :zomg_unicode, :what_who, :base64].each do |f| var = "@#{f}" return false if instance_variable_get(var) != other.instance_variable_get(var) end true end def validate end end # struct Nested1 { # 1: list a_list # 2: map i32_map # 3: map i64_map # 4: map dbl_map # 5: map str_map # } class Nested1 include Thrift::Struct attr_accessor :a_list, :i32_map, :i64_map, :dbl_map, :str_map FIELDS = { 1 => {:type => Thrift::Types::LIST, :name => 'a_list', :element => {:type => Thrift::Types::STRUCT, :class => OneOfEach}}, 2 => {:type => Thrift::Types::MAP, :name => 'i32_map', :key => {:type => Thrift::Types::I32}, :value => {:type => Thrift::Types::STRUCT, :class => OneOfEach}}, 3 => {:type => Thrift::Types::MAP, :name => 'i64_map', :key => {:type => Thrift::Types::I64}, :value => {:type => Thrift::Types::STRUCT, :class => OneOfEach}}, 4 => {:type => Thrift::Types::MAP, :name => 'dbl_map', :key => {:type => Thrift::Types::DOUBLE}, :value => {:type => Thrift::Types::STRUCT, :class => OneOfEach}}, 5 => {:type => Thrift::Types::MAP, :name => 'str_map', :key => {:type => Thrift::Types::STRING}, :value => {:type => Thrift::Types::STRUCT, :class => OneOfEach}} } def validate end end # struct Nested2 { # 1: list a_list # 2: map i32_map # 3: map i64_map # 4: map dbl_map # 5: map str_map # } class Nested2 include Thrift::Struct attr_accessor :a_list, :i32_map, :i64_map, :dbl_map, :str_map FIELDS = { 1 => {:type => Thrift::Types::LIST, :name => 'a_list', :element => {:type => Thrift::Types::STRUCT, :class => Nested1}}, 2 => {:type => Thrift::Types::MAP, :name => 'i32_map', :key => {:type => Thrift::Types::I32}, :value => {:type => Thrift::Types::STRUCT, :class => Nested1}}, 3 => {:type => Thrift::Types::MAP, :name => 'i64_map', :key => {:type => Thrift::Types::I64}, :value => {:type => Thrift::Types::STRUCT, :class => Nested1}}, 4 => {:type => Thrift::Types::MAP, :name => 'dbl_map', :key => {:type => Thrift::Types::DOUBLE}, :value => {:type => Thrift::Types::STRUCT, :class => Nested1}}, 5 => {:type => Thrift::Types::MAP, :name => 'str_map', :key => {:type => Thrift::Types::STRING}, :value => {:type => Thrift::Types::STRUCT, :class => Nested1}} } def validate end end # struct Nested3 { # 1: list a_list # 2: map i32_map # 3: map i64_map # 4: map dbl_map # 5: map str_map # } class Nested3 include Thrift::Struct attr_accessor :a_list, :i32_map, :i64_map, :dbl_map, :str_map FIELDS = { 1 => {:type => Thrift::Types::LIST, :name => 'a_list', :element => {:type => Thrift::Types::STRUCT, :class => Nested2}}, 2 => {:type => Thrift::Types::MAP, :name => 'i32_map', :key => {:type => Thrift::Types::I32}, :value => {:type => Thrift::Types::STRUCT, :class => Nested2}}, 3 => {:type => Thrift::Types::MAP, :name => 'i64_map', :key => {:type => Thrift::Types::I64}, :value => {:type => Thrift::Types::STRUCT, :class => Nested2}}, 4 => {:type => Thrift::Types::MAP, :name => 'dbl_map', :key => {:type => Thrift::Types::DOUBLE}, :value => {:type => Thrift::Types::STRUCT, :class => Nested2}}, 5 => {:type => Thrift::Types::MAP, :name => 'str_map', :key => {:type => Thrift::Types::STRING}, :value => {:type => Thrift::Types::STRUCT, :class => Nested2}} } def validate end end # struct Nested4 { # 1: list a_list # 2: map i32_map # 3: map i64_map # 4: map dbl_map # 5: map str_map # } class Nested4 include Thrift::Struct attr_accessor :a_list, :i32_map, :i64_map, :dbl_map, :str_map FIELDS = { 1 => {:type => Thrift::Types::LIST, :name => 'a_list', :element => {:type => Thrift::Types::STRUCT, :class => Nested3}}, 2 => {:type => Thrift::Types::MAP, :name => 'i32_map', :key => {:type => Thrift::Types::I32}, :value => {:type => Thrift::Types::STRUCT, :class => Nested3}}, 3 => {:type => Thrift::Types::MAP, :name => 'i64_map', :key => {:type => Thrift::Types::I64}, :value => {:type => Thrift::Types::STRUCT, :class => Nested3}}, 4 => {:type => Thrift::Types::MAP, :name => 'dbl_map', :key => {:type => Thrift::Types::DOUBLE}, :value => {:type => Thrift::Types::STRUCT, :class => Nested3}}, 5 => {:type => Thrift::Types::MAP, :name => 'str_map', :key => {:type => Thrift::Types::STRING}, :value => {:type => Thrift::Types::STRUCT, :class => Nested3}} } def validate end end end end