From ac10873e26f99b3d054d1cb89c00bad239ace691 Mon Sep 17 00:00:00 2001
From: Maxim Zaks <maxim.zaks@gmail.com>
Date: Sun, 16 Aug 2015 09:34:56 +0200
Subject: [PATCH] fixed code generator for array of bools

Change-Id: I3cdd801b641bf180222203a37634598350d340e3
---
 src/idl_gen_general.cpp                       |   6 ++---
 tests/MyGame/Example/Monster.cs               |   8 ++++++-
 tests/MyGame/Example/Monster.go               |  22 +++++++++++++++++-
 tests/MyGame/Example/Monster.java             |   9 ++++++-
 tests/MyGame/Example/Monster.py               |  19 ++++++++++++++-
 .../MyGame/Example/TestSimpleTableWithEnum.cs |   1 +
 .../Example/TestSimpleTableWithEnum.java      |   1 +
 tests/monster_test.bfbs                       | Bin 2496 -> 2744 bytes
 tests/monster_test.fbs                        |   1 +
 tests/monster_test_generated.h                |  11 +++++++--
 tests/monsterdata_python_wire.mon             | Bin 288 -> 288 bytes
 tests/monsterdata_test.json                   |   3 +++
 tests/monsterdata_test.mon                    | Bin 336 -> 352 bytes
 13 files changed, 72 insertions(+), 9 deletions(-)

diff --git a/src/idl_gen_general.cpp b/src/idl_gen_general.cpp
index 917bf0bb..3b597cf7 100644
--- a/src/idl_gen_general.cpp
+++ b/src/idl_gen_general.cpp
@@ -752,9 +752,9 @@ static void GenStruct(const LanguageParameters &lang, const Parser &parser,
             code += index;
           }
           code += ")" + dest_mask + " : ";
-          code += IsScalar(field.value.type.element)
-                  ? default_cast + "0"
-                  : "null";
+
+          code += field.value.type.element == BASE_TYPE_BOOL ? "false" :
+            (IsScalar(field.value.type.element) ? default_cast + "0" : "null");
           break;
         }
         case BASE_TYPE_UNION:
diff --git a/tests/MyGame/Example/Monster.cs b/tests/MyGame/Example/Monster.cs
index 975e4d08..0076595a 100644
--- a/tests/MyGame/Example/Monster.cs
+++ b/tests/MyGame/Example/Monster.cs
@@ -61,8 +61,11 @@ public sealed class Monster : Table {
   public bool MutateTesthashs64Fnv1a(long testhashs64_fnv1a) { int o = __offset(48); if (o != 0) { bb.PutLong(o + bb_pos, testhashs64_fnv1a); return true; } else { return false; } }
   public ulong Testhashu64Fnv1a { get { int o = __offset(50); return o != 0 ? bb.GetUlong(o + bb_pos) : (ulong)0; } }
   public bool MutateTesthashu64Fnv1a(ulong testhashu64_fnv1a) { int o = __offset(50); if (o != 0) { bb.PutUlong(o + bb_pos, testhashu64_fnv1a); return true; } else { return false; } }
+  public bool GetTestarrayofbools(int j) { int o = __offset(52); return o != 0 ? 0!=bb.Get(__vector(o) + j * 1) : false; }
+  public int TestarrayofboolsLength { get { int o = __offset(52); return o != 0 ? __vector_len(o) : 0; } }
+  public bool MutateTestarrayofbools(int j, bool testarrayofbools) { int o = __offset(52); if (o != 0) { bb.Put(__vector(o) + j * 1, (byte)(testarrayofbools ? 1 : 0)); return true; } else { return false; } }
 
-  public static void StartMonster(FlatBufferBuilder builder) { builder.StartObject(24); }
+  public static void StartMonster(FlatBufferBuilder builder) { builder.StartObject(25); }
   public static void AddPos(FlatBufferBuilder builder, Offset<Vec3> posOffset) { builder.AddStruct(0, posOffset.Value, 0); }
   public static void AddMana(FlatBufferBuilder builder, short mana) { builder.AddShort(1, mana, 150); }
   public static void AddHp(FlatBufferBuilder builder, short hp) { builder.AddShort(2, hp, 100); }
@@ -95,6 +98,9 @@ public sealed class Monster : Table {
   public static void AddTesthashu32Fnv1a(FlatBufferBuilder builder, uint testhashu32Fnv1a) { builder.AddUint(21, testhashu32Fnv1a, 0); }
   public static void AddTesthashs64Fnv1a(FlatBufferBuilder builder, long testhashs64Fnv1a) { builder.AddLong(22, testhashs64Fnv1a, 0); }
   public static void AddTesthashu64Fnv1a(FlatBufferBuilder builder, ulong testhashu64Fnv1a) { builder.AddUlong(23, testhashu64Fnv1a, 0); }
+  public static void AddTestarrayofbools(FlatBufferBuilder builder, VectorOffset testarrayofboolsOffset) { builder.AddOffset(24, testarrayofboolsOffset.Value, 0); }
+  public static VectorOffset CreateTestarrayofboolsVector(FlatBufferBuilder builder, bool[] data) { builder.StartVector(1, data.Length, 1); for (int i = data.Length - 1; i >= 0; i--) builder.AddBool(data[i]); return builder.EndVector(); }
+  public static void StartTestarrayofboolsVector(FlatBufferBuilder builder, int numElems) { builder.StartVector(1, numElems, 1); }
   public static Offset<Monster> EndMonster(FlatBufferBuilder builder) {
     int o = builder.EndObject();
     builder.Required(o, 10);  // name
diff --git a/tests/MyGame/Example/Monster.go b/tests/MyGame/Example/Monster.go
index a51e4296..6c0c3659 100644
--- a/tests/MyGame/Example/Monster.go
+++ b/tests/MyGame/Example/Monster.go
@@ -295,7 +295,24 @@ func (rcv *Monster) Testhashu64Fnv1a() uint64 {
 	return 0
 }
 
-func MonsterStart(builder *flatbuffers.Builder) { builder.StartObject(24) }
+func (rcv *Monster) Testarrayofbools(j int) byte {
+	o := flatbuffers.UOffsetT(rcv._tab.Offset(52))
+	if o != 0 {
+		a := rcv._tab.Vector(o)
+		return rcv._tab.GetByte(a + flatbuffers.UOffsetT(j * 1))
+	}
+	return 0
+}
+
+func (rcv *Monster) TestarrayofboolsLength() int {
+	o := flatbuffers.UOffsetT(rcv._tab.Offset(52))
+	if o != 0 {
+		return rcv._tab.VectorLen(o)
+	}
+	return 0
+}
+
+func MonsterStart(builder *flatbuffers.Builder) { builder.StartObject(25) }
 func MonsterAddPos(builder *flatbuffers.Builder, pos flatbuffers.UOffsetT) { builder.PrependStructSlot(0, flatbuffers.UOffsetT(pos), 0) }
 func MonsterAddMana(builder *flatbuffers.Builder, mana int16) { builder.PrependInt16Slot(1, mana, 150) }
 func MonsterAddHp(builder *flatbuffers.Builder, hp int16) { builder.PrependInt16Slot(2, hp, 100) }
@@ -329,4 +346,7 @@ func MonsterAddTesthashs32Fnv1a(builder *flatbuffers.Builder, testhashs32Fnv1a i
 func MonsterAddTesthashu32Fnv1a(builder *flatbuffers.Builder, testhashu32Fnv1a uint32) { builder.PrependUint32Slot(21, testhashu32Fnv1a, 0) }
 func MonsterAddTesthashs64Fnv1a(builder *flatbuffers.Builder, testhashs64Fnv1a int64) { builder.PrependInt64Slot(22, testhashs64Fnv1a, 0) }
 func MonsterAddTesthashu64Fnv1a(builder *flatbuffers.Builder, testhashu64Fnv1a uint64) { builder.PrependUint64Slot(23, testhashu64Fnv1a, 0) }
+func MonsterAddTestarrayofbools(builder *flatbuffers.Builder, testarrayofbools flatbuffers.UOffsetT) { builder.PrependUOffsetTSlot(24, flatbuffers.UOffsetT(testarrayofbools), 0) }
+func MonsterStartTestarrayofboolsVector(builder *flatbuffers.Builder, numElems int) flatbuffers.UOffsetT { return builder.StartVector(1, numElems, 1)
+}
 func MonsterEnd(builder *flatbuffers.Builder) flatbuffers.UOffsetT { return builder.EndObject() }
diff --git a/tests/MyGame/Example/Monster.java b/tests/MyGame/Example/Monster.java
index 0a5f7dde..19b356de 100644
--- a/tests/MyGame/Example/Monster.java
+++ b/tests/MyGame/Example/Monster.java
@@ -68,8 +68,12 @@ public final class Monster extends Table {
   public boolean mutateTesthashs64Fnv1a(long testhashs64_fnv1a) { int o = __offset(48); if (o != 0) { bb.putLong(o + bb_pos, testhashs64_fnv1a); return true; } else { return false; } }
   public long testhashu64Fnv1a() { int o = __offset(50); return o != 0 ? bb.getLong(o + bb_pos) : 0; }
   public boolean mutateTesthashu64Fnv1a(long testhashu64_fnv1a) { int o = __offset(50); if (o != 0) { bb.putLong(o + bb_pos, testhashu64_fnv1a); return true; } else { return false; } }
+  public boolean testarrayofbools(int j) { int o = __offset(52); return o != 0 ? 0!=bb.get(__vector(o) + j * 1) : false; }
+  public int testarrayofboolsLength() { int o = __offset(52); return o != 0 ? __vector_len(o) : 0; }
+  public ByteBuffer testarrayofboolsAsByteBuffer() { return __vector_as_bytebuffer(52, 1); }
+  public boolean mutateTestarrayofbools(int j, boolean testarrayofbools) { int o = __offset(52); if (o != 0) { bb.put(__vector(o) + j * 1, (byte)(testarrayofbools ? 1 : 0)); return true; } else { return false; } }
 
-  public static void startMonster(FlatBufferBuilder builder) { builder.startObject(24); }
+  public static void startMonster(FlatBufferBuilder builder) { builder.startObject(25); }
   public static void addPos(FlatBufferBuilder builder, int posOffset) { builder.addStruct(0, posOffset, 0); }
   public static void addMana(FlatBufferBuilder builder, short mana) { builder.addShort(1, mana, 150); }
   public static void addHp(FlatBufferBuilder builder, short hp) { builder.addShort(2, hp, 100); }
@@ -102,6 +106,9 @@ public final class Monster extends Table {
   public static void addTesthashu32Fnv1a(FlatBufferBuilder builder, long testhashu32Fnv1a) { builder.addInt(21, (int)(testhashu32Fnv1a & 0xFFFFFFFFL), 0); }
   public static void addTesthashs64Fnv1a(FlatBufferBuilder builder, long testhashs64Fnv1a) { builder.addLong(22, testhashs64Fnv1a, 0); }
   public static void addTesthashu64Fnv1a(FlatBufferBuilder builder, long testhashu64Fnv1a) { builder.addLong(23, testhashu64Fnv1a, 0); }
+  public static void addTestarrayofbools(FlatBufferBuilder builder, int testarrayofboolsOffset) { builder.addOffset(24, testarrayofboolsOffset, 0); }
+  public static int createTestarrayofboolsVector(FlatBufferBuilder builder, boolean[] data) { builder.startVector(1, data.length, 1); for (int i = data.length - 1; i >= 0; i--) builder.addBoolean(data[i]); return builder.endVector(); }
+  public static void startTestarrayofboolsVector(FlatBufferBuilder builder, int numElems) { builder.startVector(1, numElems, 1); }
   public static int endMonster(FlatBufferBuilder builder) {
     int o = builder.endObject();
     builder.required(o, 10);  // name
diff --git a/tests/MyGame/Example/Monster.py b/tests/MyGame/Example/Monster.py
index 2f0dc35e..6122de59 100644
--- a/tests/MyGame/Example/Monster.py
+++ b/tests/MyGame/Example/Monster.py
@@ -246,7 +246,22 @@ class Monster(object):
             return self._tab.Get(flatbuffers.number_types.Uint64Flags, o + self._tab.Pos)
         return 0
 
-def MonsterStart(builder): builder.StartObject(24)
+    # Monster
+    def Testarrayofbools(self, j):
+        o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(52))
+        if o != 0:
+            a = self._tab.Vector(o)
+            return self._tab.Get(flatbuffers.number_types.BoolFlags, a + flatbuffers.number_types.UOffsetTFlags.py_type(j * 1))
+        return 0
+
+    # Monster
+    def TestarrayofboolsLength(self):
+        o = flatbuffers.number_types.UOffsetTFlags.py_type(self._tab.Offset(52))
+        if o != 0:
+            return self._tab.VectorLen(o)
+        return 0
+
+def MonsterStart(builder): builder.StartObject(25)
 def MonsterAddPos(builder, pos): builder.PrependStructSlot(0, flatbuffers.number_types.UOffsetTFlags.py_type(pos), 0)
 def MonsterAddMana(builder, mana): builder.PrependInt16Slot(1, mana, 150)
 def MonsterAddHp(builder, hp): builder.PrependInt16Slot(2, hp, 100)
@@ -275,4 +290,6 @@ def MonsterAddTesthashs32Fnv1a(builder, testhashs32Fnv1a): builder.PrependInt32S
 def MonsterAddTesthashu32Fnv1a(builder, testhashu32Fnv1a): builder.PrependUint32Slot(21, testhashu32Fnv1a, 0)
 def MonsterAddTesthashs64Fnv1a(builder, testhashs64Fnv1a): builder.PrependInt64Slot(22, testhashs64Fnv1a, 0)
 def MonsterAddTesthashu64Fnv1a(builder, testhashu64Fnv1a): builder.PrependUint64Slot(23, testhashu64Fnv1a, 0)
+def MonsterAddTestarrayofbools(builder, testarrayofbools): builder.PrependUOffsetTRelativeSlot(24, flatbuffers.number_types.UOffsetTFlags.py_type(testarrayofbools), 0)
+def MonsterStartTestarrayofboolsVector(builder, numElems): return builder.StartVector(1, numElems, 1)
 def MonsterEnd(builder): return builder.EndObject()
diff --git a/tests/MyGame/Example/TestSimpleTableWithEnum.cs b/tests/MyGame/Example/TestSimpleTableWithEnum.cs
index d2e75b52..9b436ffd 100644
--- a/tests/MyGame/Example/TestSimpleTableWithEnum.cs
+++ b/tests/MyGame/Example/TestSimpleTableWithEnum.cs
@@ -11,6 +11,7 @@ public sealed class TestSimpleTableWithEnum : Table {
   public TestSimpleTableWithEnum __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
 
   public Color Color { get { int o = __offset(4); return o != 0 ? (Color)bb.GetSbyte(o + bb_pos) : (Color)2; } }
+  public bool MutateColor(Color color) { int o = __offset(4); if (o != 0) { bb.PutSbyte(o + bb_pos, (sbyte)color); return true; } else { return false; } }
 
   public static Offset<TestSimpleTableWithEnum> CreateTestSimpleTableWithEnum(FlatBufferBuilder builder,
       Color color = (Color)2) {
diff --git a/tests/MyGame/Example/TestSimpleTableWithEnum.java b/tests/MyGame/Example/TestSimpleTableWithEnum.java
index af9d7dbf..d5d63de7 100644
--- a/tests/MyGame/Example/TestSimpleTableWithEnum.java
+++ b/tests/MyGame/Example/TestSimpleTableWithEnum.java
@@ -13,6 +13,7 @@ public final class TestSimpleTableWithEnum extends Table {
   public TestSimpleTableWithEnum __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; return this; }
 
   public byte color() { int o = __offset(4); return o != 0 ? bb.get(o + bb_pos) : 2; }
+  public boolean mutateColor(byte color) { int o = __offset(4); if (o != 0) { bb.put(o + bb_pos, color); return true; } else { return false; } }
 
   public static int createTestSimpleTableWithEnum(FlatBufferBuilder builder,
       byte color) {
diff --git a/tests/monster_test.bfbs b/tests/monster_test.bfbs
index fcf8d9cee0224fa32871fd1311f590368460ad33..e5f51face696a1ee9b3aa64b70bba83df1c4645a 100644
GIT binary patch
delta 1079
zcmaJ=O-NKx6h80GdoypI<I^Zh#WZA?>CaI#v`owjBf_RdQq)2mYy63EMrNiVg>q9M
zEkrvYt)e6(+O%mAE<yt%TnH_S79!#*Tm){!@n@#*-Z#~(dhoq-zH`q#_dEAzZvTgp
z3GbPcM06Tx13W5`6IO%0>>_&OCMpIxOrm9Q2gXGHDlj&AtD&y~jtHKQ4omwOem5ZE
z>zmmui~`^@sgyMGkO7bA05E0{VV%F<A$XnPMDqH;;7}yo8S06IZw@5;+oSgfC*PIS
z)S*zW7C{PKjYSj5aGcC+HmiXP1g{0#VW@j@qpGYQP76>B%x+074pCr@k12;O6B;zA
z5z2_TL#fzToEPvQsPIGOqIzYEKPiFHO;iv;p<GnSmrw@&9^3F7?RcSM4EO;)2ipn!
z1lqtoKsO+^`wMa>fMrn(_BHG(+!ojeuy<i!!tMgdZz2OpGZ0Zqr=)DL#iF$&wk#Bn
zhlXRlJ+W9Mfe=OaM7x&yeT(C&&z(uj?oB7ZQvL40wq))`{tDJ*GozOkhu<8xnQJP|
z^$wr;(Wd6-H1~l1%FWzN^D~FfUAZF*89ttO_}xL9xo+@=qspDKnfi#!v?|Nmm6=7N
z*SFhzNvl^^ws}M=FT9r<5vn0iYfzf`o7SYnxlpfFr+2tjFSi1+9oa1{?r^VOsodr#
zdPCv3Js^+uI4|gZN+Z`e&nini;5?ze*ySnbg}T;^TwIUhqKIoE&Rm=%4uXba30ktp
zi*#_2%U;(}b!v};uIlnxETG^?<j+ZkB9z+Wr><rt$P2D>`0IvWO=UP>1k{-fcNx{y
zizuXG+MkJ{^ATW8ilBn^3{M-r(G{fSr-+jmQ>nm0yZ^LWhzreLK$QB=Tan}9au6NF
un=|A*r@eW(s4$v{)Y1{SxLEQN8*nEUiQ!F=B`>)BSP_;xjAycDto#Pw9`!r`

delta 808
zcmX|9O=uHA82xtkf17MHnpQ(?HAqr5R7fh)D$zy?9wefuh+t`<qJq>m38ElXZyprX
z@1jsV6i=e11P?t)>7gKqhzBViatKn;gNO&wO`7%1t~&7c&6}S$Z|9rE#L}h*JNNYw
z(ExA|SW<{|@FMuLL9}2IowbQ>nnWtbv%oBH_~H5d;1+b`;PB)P5^@me2A==+eGn{U
zb7(VZ6d?;eq76Wnqe@r8^?hH1k|-T7jeux^2bJEfW9Z31a_z@oftM=HmU&v)hENUc
z<XNRVA&n96zj1IPzfq2e6^~ufFX|o_MDmsldK*b6kn%hD6wZ7Gz6ah8yaFQ7tC-J%
zAA`q$7chJeRDlI}M8HSE1K=s}TR@(_3SGiacTq0T@)9-z)eDvCrSS@Ps8PESUWzlr
zJJgIF_k!QD=lKLwF;rHa@2DB494gcGxTdC^xllR<j~kF5{_dRgIIg8_(F}~Nr#!4>
z>|ChKcRa22+UG(ge)1Eo*ZmQy7_w5T$tzk;oN2PBC8MQQ;1R<FA)cOBYJ6JXuYBeE
z`d*Q2@oPQl#@B;IvL;k)@tWSF6j(R%(Q-HuRA`PzjEl-VzcdcO<BPFJbgpx!Sv;0%
z2fOu?D4i_1ytRMNXX<JN$|0BV$S@<H30e$AL38m8!u63r5%FEKPwZ}U%}gar@KwkN
z{Ny}}N7u%$kkjUG=8)3hUDhFdFIySm`25J~7ehWTTPZQ>^P1HoW_&j6bh3<CGLp2A
P_j4T>l~FtRlU@G<oczL7

diff --git a/tests/monster_test.fbs b/tests/monster_test.fbs
index 6a205b05..b2b99bb8 100755
--- a/tests/monster_test.fbs
+++ b/tests/monster_test.fbs
@@ -43,6 +43,7 @@ table Monster {
   /// multiline too
   testarrayoftables:[Monster] (id: 11);
   testarrayofstring:[string] (id: 10);
+  testarrayofbools:[bool] (id: 24);
   enemy:MyGame.Example.Monster (id:12);  // Test referring by full namespace.
   test:Any (id: 8);
   test4:[Test] (id: 9);
diff --git a/tests/monster_test_generated.h b/tests/monster_test_generated.h
index 93262ddd..c468b108 100644
--- a/tests/monster_test_generated.h
+++ b/tests/monster_test_generated.h
@@ -219,6 +219,8 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
   bool mutate_testhashs64_fnv1a(int64_t testhashs64_fnv1a) { return SetField(48, testhashs64_fnv1a); }
   uint64_t testhashu64_fnv1a() const { return GetField<uint64_t>(50, 0); }
   bool mutate_testhashu64_fnv1a(uint64_t testhashu64_fnv1a) { return SetField(50, testhashu64_fnv1a); }
+  const flatbuffers::Vector<uint8_t> *testarrayofbools() const { return GetPointer<const flatbuffers::Vector<uint8_t> *>(52); }
+  flatbuffers::Vector<uint8_t> *mutable_testarrayofbools() { return GetPointer<flatbuffers::Vector<uint8_t> *>(52); }
   bool Verify(flatbuffers::Verifier &verifier) const {
     return VerifyTableStart(verifier) &&
            VerifyField<Vec3>(verifier, 4 /* pos */) &&
@@ -255,6 +257,8 @@ struct Monster FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
            VerifyField<uint32_t>(verifier, 46 /* testhashu32_fnv1a */) &&
            VerifyField<int64_t>(verifier, 48 /* testhashs64_fnv1a */) &&
            VerifyField<uint64_t>(verifier, 50 /* testhashu64_fnv1a */) &&
+           VerifyField<flatbuffers::uoffset_t>(verifier, 52 /* testarrayofbools */) &&
+           verifier.Verify(testarrayofbools()) &&
            verifier.EndTable();
   }
 };
@@ -285,10 +289,11 @@ struct MonsterBuilder {
   void add_testhashu32_fnv1a(uint32_t testhashu32_fnv1a) { fbb_.AddElement<uint32_t>(46, testhashu32_fnv1a, 0); }
   void add_testhashs64_fnv1a(int64_t testhashs64_fnv1a) { fbb_.AddElement<int64_t>(48, testhashs64_fnv1a, 0); }
   void add_testhashu64_fnv1a(uint64_t testhashu64_fnv1a) { fbb_.AddElement<uint64_t>(50, testhashu64_fnv1a, 0); }
+  void add_testarrayofbools(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> testarrayofbools) { fbb_.AddOffset(52, testarrayofbools); }
   MonsterBuilder(flatbuffers::FlatBufferBuilder &_fbb) : fbb_(_fbb) { start_ = fbb_.StartTable(); }
   MonsterBuilder &operator=(const MonsterBuilder &);
   flatbuffers::Offset<Monster> Finish() {
-    auto o = flatbuffers::Offset<Monster>(fbb_.EndTable(start_, 24));
+    auto o = flatbuffers::Offset<Monster>(fbb_.EndTable(start_, 25));
     fbb_.Required(o, 10);  // name
     return o;
   }
@@ -317,12 +322,14 @@ inline flatbuffers::Offset<Monster> CreateMonster(flatbuffers::FlatBufferBuilder
    int32_t testhashs32_fnv1a = 0,
    uint32_t testhashu32_fnv1a = 0,
    int64_t testhashs64_fnv1a = 0,
-   uint64_t testhashu64_fnv1a = 0) {
+   uint64_t testhashu64_fnv1a = 0,
+   flatbuffers::Offset<flatbuffers::Vector<uint8_t>> testarrayofbools = 0) {
   MonsterBuilder builder_(_fbb);
   builder_.add_testhashu64_fnv1a(testhashu64_fnv1a);
   builder_.add_testhashs64_fnv1a(testhashs64_fnv1a);
   builder_.add_testhashu64_fnv1(testhashu64_fnv1);
   builder_.add_testhashs64_fnv1(testhashs64_fnv1);
+  builder_.add_testarrayofbools(testarrayofbools);
   builder_.add_testhashu32_fnv1a(testhashu32_fnv1a);
   builder_.add_testhashs32_fnv1a(testhashs32_fnv1a);
   builder_.add_testhashu32_fnv1(testhashu32_fnv1);
diff --git a/tests/monsterdata_python_wire.mon b/tests/monsterdata_python_wire.mon
index ae24c6bdd7a5bdf77850bca6291e7596f62317e0..c6c397848263e65f744f91d5fc3882f06641f674 100644
GIT binary patch
delta 85
zcmZ3$w1A1%fdK~07(6EO8*(!+m;psxfY@iEr@bl@kWm4|89)qT%Q0v$a50DgS!N6z
UKoSI4CT>)pcz}h`Y~oFK0Gvz<AOHXW

delta 85
zcmZ3$w1A1<fdK(b7<?x38giNdMLd8wV4|nJDoB<Ih)aMt1<ICV&|u(V5MeN3-~fsM
R!9+#*i3fNXO(x!S2LO&33Wfjx

diff --git a/tests/monsterdata_test.json b/tests/monsterdata_test.json
index 6525d545..a718efa0 100755
--- a/tests/monsterdata_test.json
+++ b/tests/monsterdata_test.json
@@ -37,6 +37,9 @@
     "test1",
     "test2"
   ],
+  testarrayofbools:[
+    true, false, true
+  ],
   testhashs32_fnv1: "This string is being hashed!",
   testhashu32_fnv1: "This string is being hashed!",
   testhashs64_fnv1: "This string is being hashed!",
diff --git a/tests/monsterdata_test.mon b/tests/monsterdata_test.mon
index feb29e83d7bbe1dc42575f0ed9383d711d85f36e..0505aeeb4b36920b1995a2adfe60022ef627e6d0 100644
GIT binary patch
delta 136
zcmcb>^nl6JgMop;*WWJ~NI`)aLj?l|kj=(m03=O-n3chT!G^&B$btb61|Nn9h6IKH
zh7g7fh5`l`2D6Et+L9pY8$f&lh&KRn1`s;{vB|_%V|HdBgOP!8;%-AA%WUFXV-Pi2
Hkx?H2g;5g0

delta 120
zcmaFBbb-m!gMop;*WWJ~NWp;#LkR;1kjKWL10)TAn3chV!GggCu7ZKVfx(3#fFXjx
xgTaR(fgyvzWTL0G;2EHTJwUt!h!cR=Vq&i`GmxHm+>p^^;%{R{lgWmR`T%-05z+tv

-- 
GitLab