diff --git a/formats/enum_to_i_class_border_1.ksy b/formats/enum_to_i_class_border_1.ksy new file mode 100644 index 000000000..7821b6f5b --- /dev/null +++ b/formats/enum_to_i_class_border_1.ksy @@ -0,0 +1,29 @@ +# https://github.com/kaitai-io/kaitai_struct/issues/552 +meta: + id: enum_to_i_class_border_1 + endian: le + imports: + - enum_to_i_class_border_2 + +seq: + - id: pet_1 + type: u4 + enum: animal + - id: pet_2 + type: u4 + enum: animal + +enums: + animal: + 4: dog + 7: cat + 12: chicken + +instances: + some_dog: + value: 4 + enum: animal + + checker: + pos: 0 + type: enum_to_i_class_border_2(_root) diff --git a/formats/enum_to_i_class_border_2.ksy b/formats/enum_to_i_class_border_2.ksy new file mode 100644 index 000000000..a316791ff --- /dev/null +++ b/formats/enum_to_i_class_border_2.ksy @@ -0,0 +1,14 @@ +# https://github.com/kaitai-io/kaitai_struct/issues/552 +meta: + id: enum_to_i_class_border_2 + endian: le + imports: + - enum_to_i_class_border_1 + +params: + - id: parent + type: enum_to_i_class_border_1 + +instances: + is_dog: + value: parent.some_dog.to_i == 4 diff --git a/spec/ruby/enum_to_i_class_border_1_spec.rb b/spec/ruby/enum_to_i_class_border_1_spec.rb new file mode 100644 index 000000000..24646ff4d --- /dev/null +++ b/spec/ruby/enum_to_i_class_border_1_spec.rb @@ -0,0 +1,12 @@ +require 'enum_to_i_class_border_1' +require 'enum_to_i_class_border_2' + +RSpec.describe EnumToIClassBorder1 do + it 'parses test properly' do + r = EnumToIClassBorder1.from_file('src/enum_0.bin') + + expect(r.pet_1).to eq :animal_cat + expect(r.pet_2).to eq :animal_chicken + expect(r.checker.is_dog()).to eq true + end +end