Skip to content

Commit

Permalink
Fix tests
Browse files Browse the repository at this point in the history
  • Loading branch information
beckdave committed Feb 7, 2024
1 parent 5645e4e commit 7548105
Show file tree
Hide file tree
Showing 25 changed files with 179 additions and 277 deletions.
10 changes: 6 additions & 4 deletions csharp/src/serializevariant/VariantToVarValue.cs
Original file line number Diff line number Diff line change
Expand Up @@ -424,7 +424,7 @@ public void EnterStruct(Variant variant, int type, int index, int level, int siz
if (m_fieldStruct == null)
{
Debug.Assert(m_structVarValue != null);
m_fieldList = m_structVarValue.GetFieldByName("valstruct");
m_fieldStruct = m_structVarValue.GetFieldByName("valstruct");
}
MetaField? fieldStruct = m_fieldStruct;
Debug.Assert(fieldStruct != null);
Expand Down Expand Up @@ -491,7 +491,7 @@ public void ExitStruct(Variant variant, int type, int index, int level, int size
if (m_fieldStruct == null)
{
Debug.Assert(m_structVarValue != null);
m_fieldList = m_structVarValue.GetFieldByName("valstruct");
m_fieldStruct = m_structVarValue.GetFieldByName("valstruct");
}
MetaField? fieldStruct = m_fieldStruct;
Debug.Assert(fieldStruct != null);
Expand Down Expand Up @@ -523,6 +523,8 @@ public void ExitStruct(Variant variant, int type, int index, int level, int size
MetaField? fieldWithoutArray = field.FieldWithoutArray;
Debug.Assert(fieldWithoutArray != null);

m_visitor.ExitArrayStruct(field);

if (level > 0)
{
m_visitor.ExitStruct(fieldWithoutArray);
Expand All @@ -544,7 +546,7 @@ public void ExitList(Variant variant, int type, int index, int level, int size,
static MetaField? m_fieldStruct = null;
static MetaField? m_fieldStructWithoutArray = null;
static MetaField? m_fieldName = null;
static MetaField? m_fieldType = null;
// static MetaField? m_fieldIndex = null;
static MetaField? m_fieldBool = null;
static MetaField? m_fieldInt8 = null;
static MetaField? m_fieldUInt8 = null;
Expand All @@ -560,7 +562,7 @@ public void ExitList(Variant variant, int type, int index, int level, int size,
static MetaField? m_fieldBytes = null;
static MetaField? m_fieldArrayBool = null;
static MetaField? m_fieldArrayInt8 = null;
static MetaField? m_fieldArrayUInt8 = null;
// static MetaField? m_fieldArrayUInt8 = null;
static MetaField? m_fieldArrayInt16 = null;
static MetaField? m_fieldArrayUInt16 = null;
static MetaField? m_fieldArrayInt32 = null;
Expand Down
4 changes: 2 additions & 2 deletions csharp/src/variant/VariantValueStruct.cs
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ public int Length

public void Accept(IVariantVisitor visitor, Variant variant, int index, int level, int size, string name)
{
visitor.EnterList(variant, VARTYPE_STRUCT, index, level, size, name);
visitor.EnterStruct(variant, VARTYPE_STRUCT, index, level, size, name);
++level;
int i = 0;
int subsize = m_value.Count;
Expand All @@ -185,7 +185,7 @@ public void Accept(IVariantVisitor visitor, Variant variant, int index, int leve
i++;
}
--level;
visitor.ExitList(variant, VARTYPE_STRUCT, index, level, size, name);
visitor.ExitStruct(variant, VARTYPE_STRUCT, index, level, size, name);
}

public int VarType { get { return VARTYPE_STRUCT; } }
Expand Down
56 changes: 31 additions & 25 deletions csharp/test/testfinalmq/TestParserStruct.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,11 @@ public class TestParserStruct : IDisposable
MetaField? m_fieldValue2 = null;
MetaField? m_fieldValueInt32 = null;
MetaField? m_fieldName = null;
MetaField? m_fieldType = null;
MetaField? m_fieldIndex = null;
MetaField? m_fieldInt32 = null;
MetaField? m_fieldString = null;
MetaField? m_fieldStruct = null;
MetaField? m_fieldStructWithoutArray = null;
MetaField? m_fieldList = null;
MetaField? m_fieldListWithoutArray = null;

Expand All @@ -48,16 +50,20 @@ public TestParserStruct()
Debug.Assert(structVarVariant != null);

m_fieldName = structVarVariant.GetFieldByName("name");
m_fieldType = structVarVariant.GetFieldByName("type");
m_fieldIndex = structVarVariant.GetFieldByName("index");
m_fieldInt32 = structVarVariant.GetFieldByName("valint32");
m_fieldString = structVarVariant.GetFieldByName("valstring");
m_fieldStruct = structVarVariant.GetFieldByName("valstruct");
m_fieldStructWithoutArray = MetaDataGlobal.Instance.GetArrayField(m_fieldStruct!);
m_fieldList = structVarVariant.GetFieldByName("vallist");
m_fieldListWithoutArray = MetaDataGlobal.Instance.GetArrayField(m_fieldList!);

Debug.Assert(m_fieldName != null);
Debug.Assert(m_fieldType != null);
Debug.Assert(m_fieldIndex != null);
Debug.Assert(m_fieldInt32 != null);
Debug.Assert(m_fieldString != null);
Debug.Assert(m_fieldStruct != null);
Debug.Assert(m_fieldStructWithoutArray != null);
Debug.Assert(m_fieldList != null);
Debug.Assert(m_fieldListWithoutArray != null);
}
Expand Down Expand Up @@ -624,7 +630,7 @@ public void TestVariantEmpty()

mockVisitor.Verify(x => x.StartStruct(It.IsAny<MetaStruct>()), Times.Once);
mockVisitor.Verify(x => x.EnterStruct(m_fieldValue!), Times.Once);
mockVisitor.Verify(x => x.EnterEnum(m_fieldType!, (int)VarValueType2Index.VARVALUETYPE_NONE), Times.Exactly(2));
mockVisitor.Verify(x => x.EnterInt32(m_fieldIndex!, (int)VarValueType2Index.VARVALUETYPE_NONE), Times.Exactly(2));
mockVisitor.Verify(x => x.ExitStruct(m_fieldValue!), Times.Once);

mockVisitor.Verify(x => x.EnterInt32(m_fieldValueInt32!, 0), Times.Once);
Expand All @@ -650,14 +656,14 @@ public void TestVariantString()

mockVisitor.Verify(x => x.StartStruct(It.IsAny<MetaStruct>()), Times.Once);
mockVisitor.Verify(x => x.EnterStruct(m_fieldValue!), Times.Once);
mockVisitor.Verify(x => x.EnterEnum(m_fieldType!, (int)VarValueType2Index.VARVALUETYPE_STRING), Times.Exactly(1));
mockVisitor.Verify(x => x.EnterInt32(m_fieldIndex!, (int)VarValueType2Index.VARVALUETYPE_STRING), Times.Exactly(1));
mockVisitor.Verify(x => x.EnterString(m_fieldString!, VALUE_STRING), Times.Exactly(1));
mockVisitor.Verify(x => x.ExitStruct(m_fieldValue!), Times.Once);

mockVisitor.Verify(x => x.EnterInt32(m_fieldValueInt32!, 0), Times.Once);

mockVisitor.Verify(x => x.EnterStruct(m_fieldValue2!), Times.Once);
mockVisitor.Verify(x => x.EnterEnum(m_fieldType!, (int)VarValueType2Index.VARVALUETYPE_NONE), Times.Once);
mockVisitor.Verify(x => x.EnterInt32(m_fieldIndex!, (int)VarValueType2Index.VARVALUETYPE_NONE), Times.Once);
mockVisitor.Verify(x => x.ExitStruct(m_fieldValue2!), Times.Once);

mockVisitor.Verify(x => x.Finished(), Times.Once);
Expand All @@ -680,61 +686,61 @@ public void TestVariantStruct()
mockVisitor.Verify(x => x.StartStruct(It.IsAny<MetaStruct>()), Times.Exactly(1));
// VariantStruct{ {"value", VariantStruct{
mockVisitor.Verify(x => x.EnterStruct(m_fieldValue!), Times.Once);
mockVisitor.Verify(x => x.EnterEnum(m_fieldType!, (int)VarValueType2Index.VARVALUETYPE_VARIANTSTRUCT), Times.Exactly(2));
mockVisitor.Verify(x => x.EnterArrayStruct(m_fieldList!), Times.Exactly(3));
mockVisitor.Verify(x => x.EnterInt32(m_fieldIndex!, (int)VarValueType2Index.VARVALUETYPE_VARIANTSTRUCT), Times.Exactly(2));
mockVisitor.Verify(x => x.EnterArrayStruct(m_fieldStruct!), Times.Exactly(2));
// {"key1", VariantList{
mockVisitor.Verify(x => x.EnterStruct(m_fieldListWithoutArray!), Times.Exactly(7));
mockVisitor.Verify(x => x.EnterStruct(m_fieldListWithoutArray!), Times.Exactly(6));
mockVisitor.Verify(x => x.EnterString(m_fieldName!, "key1"), Times.Exactly(1));
mockVisitor.Verify(x => x.EnterEnum(m_fieldType!, (int)VarValueType2Index.VARVALUETYPE_VARIANTLIST), Times.Exactly(1));
// mockVisitor.Verify(x => x.EnterArrayStruct(m_fieldList!), Times.Once);
mockVisitor.Verify(x => x.EnterInt32(m_fieldIndex!, (int)VarValueType2Index.VARVALUETYPE_VARIANTLIST), Times.Exactly(1));
mockVisitor.Verify(x => x.EnterArrayStruct(m_fieldList!), Times.Once);
// 2
// mockVisitor.Verify(x => x.EnterStruct(m_fieldListWithoutArray!), Times.Once);
mockVisitor.Verify(x => x.EnterEnum(m_fieldType!, (int)VarValueType2Index.VARVALUETYPE_INT32), Times.Exactly(2));
mockVisitor.Verify(x => x.EnterInt32(m_fieldIndex!, (int)VarValueType2Index.VARVALUETYPE_INT32), Times.Exactly(2));
mockVisitor.Verify(x => x.EnterInt32(m_fieldInt32!, 2), Times.Exactly(1));
mockVisitor.Verify(x => x.ExitStruct(m_fieldListWithoutArray!), Times.Exactly(7));
mockVisitor.Verify(x => x.ExitStruct(m_fieldListWithoutArray!), Times.Exactly(6));
// , std::string("Hello")
// mockVisitor.Verify(x => x.EnterStruct(m_fieldListWithoutArray!), Times.Once);
mockVisitor.Verify(x => x.EnterEnum(m_fieldType!, (int)VarValueType2Index.VARVALUETYPE_STRING), Times.Exactly(2));
mockVisitor.Verify(x => x.EnterInt32(m_fieldIndex!, (int)VarValueType2Index.VARVALUETYPE_STRING), Times.Exactly(2));
mockVisitor.Verify(x => x.EnterString(m_fieldString!, "Hello"), Times.Exactly(1));
// mockVisitor.Verify(x => x.ExitStruct(m_fieldListWithoutArray!), Times.Once);
// }
mockVisitor.Verify(x => x.ExitArrayStruct(m_fieldList!), Times.Exactly(3));
mockVisitor.Verify(x => x.ExitArrayStruct(m_fieldList!), Times.Exactly(1));
// mockVisitor.Verify(x => x.ExitStruct(m_fieldListWithoutArray!), Times.Once);

// {"key2", VariantStruct{
// mockVisitor.Verify(x => x.EnterStruct(m_fieldListWithoutArray!), Times.Once);
mockVisitor.Verify(x => x.EnterStruct(m_fieldStructWithoutArray!), Times.Once);
mockVisitor.Verify(x => x.EnterString(m_fieldName!, "key2"), Times.Exactly(1));
// mockVisitor.Verify(x => x.EnterEnum(m_fieldType!, (int)VarValueType2Index.VARVALUETYPE_STRUCT), Times.Exactly(1));
// mockVisitor.Verify(x => x.EnterArrayStruct(m_fieldList!), Times.Exactly(1));
// mockVisitor.Verify(x => x.EnterInt32(m_fieldIndex!, (int)VarValueType2Index.VARVALUETYPE_STRUCT), Times.Exactly(1));
// mockVisitor.Verify(x => x.EnterArrayStruct(m_fieldStruct!), Times.Exactly(1));
// {"a", 3},
// mockVisitor.Verify(x => x.EnterStruct(m_fieldListWithoutArray!), Times.Once);
mockVisitor.Verify(x => x.EnterString(m_fieldName!, "a"), Times.Exactly(1));
// mockVisitor.Verify(x => x.EnterEnum(m_fieldType!, (int)VarValueType2Index.VARVALUETYPE_INT32), Times.Exactly(1));
// mockVisitor.Verify(x => x.EnterInt32(m_fieldIndex!, (int)VarValueType2Index.VARVALUETYPE_INT32), Times.Exactly(1));
mockVisitor.Verify(x => x.EnterInt32(m_fieldInt32!, 3), Times.Exactly(1));
// mockVisitor.Verify(x => x.ExitStruct(m_fieldListWithoutArray!), Times.Once);
// {"b", std::string("Hi")}
// mockVisitor.Verify(x => x.EnterStruct(m_fieldListWithoutArray!), Times.Once);
mockVisitor.Verify(x => x.EnterString(m_fieldName!, "b"), Times.Exactly(1));
// mockVisitor.Verify(x => x.EnterEnum(m_fieldType!, (int)VarValueType2Index.VARVALUETYPE_STRING), Times.Exactly(1));
// mockVisitor.Verify(x => x.EnterInt32(m_fieldIndex!, (int)VarValueType2Index.VARVALUETYPE_STRING), Times.Exactly(1));
mockVisitor.Verify(x => x.EnterString(m_fieldString!, "Hi"), Times.Exactly(1));
// mockVisitor.Verify(x => x.ExitStruct(m_fieldListWithoutArray!), Times.Once);
// }
// mockVisitor.Verify(x => x.ExitArrayStruct(m_fieldList!), Times.Once);
// mockVisitor.Verify(x => x.ExitStruct(m_fieldListWithoutArray!), Times.Once);
mockVisitor.Verify(x => x.ExitArrayStruct(m_fieldStruct!), Times.Exactly(2));
// mockVisitor.Verify(x => x.ExitStruct(m_fieldStructWithoutArray!), Times.Once);

// {
// mockVisitor.Verify(x => x.EnterStruct(m_fieldListWithoutArray!), Times.Once);
mockVisitor.Verify(x => x.EnterString(m_fieldName!, "key3"), Times.Exactly(1));
mockVisitor.Verify(x => x.EnterEnum(m_fieldType!, (int)VarValueType2Index.VARVALUETYPE_NONE), Times.Exactly(2));
mockVisitor.Verify(x => x.EnterInt32(m_fieldIndex!, (int)VarValueType2Index.VARVALUETYPE_NONE), Times.Exactly(2));
// mockVisitor.Verify(x => x.ExitStruct(m_fieldListWithoutArray!), Times.Once);
// }}
// mockVisitor.Verify(x => x.ExitArrayStruct(m_fieldList!), Times.Once);
// mockVisitor.Verify(x => x.ExitArrayStruct(m_fieldStruct!), Times.Once);
mockVisitor.Verify(x => x.ExitStruct(m_fieldValue!), Times.Once);

mockVisitor.Verify(x => x.EnterInt32(m_fieldValueInt32!, 0), Times.Exactly(1));

mockVisitor.Verify(x => x.EnterStruct(m_fieldValue2!), Times.Once);
// mockVisitor.Verify(x => x.EnterEnum(m_fieldType!, (int)VarValueType2Index.VARVALUETYPE_NONE), Times.Exactly(1));
// mockVisitor.Verify(x => x.EnterInt32(m_fieldIndex!, (int)VarValueType2Index.VARVALUETYPE_NONE), Times.Exactly(1));
mockVisitor.Verify(x => x.ExitStruct(m_fieldValue2!), Times.Once);

mockVisitor.Verify(x => x.Finished(), Times.Exactly(1));
Expand Down
114 changes: 114 additions & 0 deletions test/matchers.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
//MIT License

//Copyright (c) 2020 bexoft GmbH (mail@bexoft.de)

//Permission is hereby granted, free of charge, to any person obtaining a copy
//of this software and associated documentation files (the "Software"), to deal
//in the Software without restriction, including without limitation the rights
//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
//copies of the Software, and to permit persons to whom the Software is
//furnished to do so, subject to the following conditions:

//The above copyright notice and this permission notice shall be included in all
//copies or substantial portions of the Software.

//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
//SOFTWARE.

#pragma once

#include "gtest/gtest.h"
#include "finalmq/streamconnection/IMessage.h"


MATCHER_P(MatcherMetaField, metaField, "")
{
return (arg.typeId == metaField.typeId &&
arg.typeName == metaField.typeName &&
arg.name == metaField.name &&
arg.index == metaField.index);
}

MATCHER_P(MatcherFloat, value, "")
{
return (arg == value || (std::isnan(arg) && std::isnan(value)));
}

MATCHER_P(MatcherDouble, value, "")
{
return (arg == value || (std::isnan(arg) && std::isnan(value)));
}

MATCHER_P(MatcherArrayFloat, value, "")
{
if (arg.size() != value.size())
{
return false;
}
for (size_t i = 0; i < arg.size(); ++i)
{
if (!(arg[i] == value[i] || (std::isnan(arg[i]) && std::isnan(value[i]))))
{
return false;
}
}
return true;
}

MATCHER_P(MatcherArrayDouble, value, "")
{
if (arg.size() != value.size())
{
return false;
}
for (size_t i = 0; i < arg.size(); ++i)
{
if (!(arg[i] == value[i] || (std::isnan(arg[i]) && std::isnan(value[i]))))
{
return false;
}
}
return true;
}


MATCHER_P2(ArrayEq, compareArray, n, "")
{
return (memcmp(arg, compareArray, n * sizeof(*arg)) == 0);
}

MATCHER_P(Event, event, "")
{
return (arg->events == event->events &&
arg->data.fd == event->data.fd);
}

MATCHER_P(ReceivedMessage, msg, "")
{
finalmq::BufferRef buffer = arg->getReceivePayload();
std::string str(buffer.first, buffer.second);
return str == msg;
}

MATCHER_P(MatcherReceiveMessage, message, "")
{
return (arg->getAllMetainfo() == message->getAllMetainfo() &&
arg->getReceivePayload().second == message->getReceivePayload().second &&
memcmp(arg->getReceivePayload().first, message->getReceivePayload().first, arg->getReceivePayload().second) == 0);
}

MATCHER_P(FdSet, fds, "")
{
return (memcmp(arg, fds, sizeof(*fds)) == 0);
}

MATCHER_P(Time, tim, "")
{
return (memcmp(arg, tim, sizeof(*tim)) == 0);
}

6 changes: 1 addition & 5 deletions test/testEpoll.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@


#include "MockIOperatingSystem.h"
#include "matchers.h"


using ::testing::_;
Expand All @@ -51,11 +52,6 @@ static const int NUMBER_OF_BYTES_TO_READ = 20;
static const int TIMEOUT = 10;


MATCHER_P(Event, event, "")
{
return (arg->events == event->events &&
arg->data.fd == event->data.fd);
}


class TestEpoll: public testing::Test
Expand Down
9 changes: 1 addition & 8 deletions test/testIntegrationConnectionHub.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
#include "finalmq/protocols/ProtocolStream.h"
#include "testHelper.h"
#include "finalmq/connectionhub/ConnectionHub.h"
#include "matchers.h"

#include <thread>
#include <chrono>
Expand All @@ -42,14 +43,6 @@ using namespace finalmq;

static const std::string MESSAGE_BUFFER = "Hello";

MATCHER_P(ReceivedMessage, msg, "")
{
BufferRef buffer = arg->getReceivePayload();
std::string str(buffer.first, buffer.second);
return str == msg;
}




class TestIntegrationConnectionHub: public testing::Test
Expand Down
11 changes: 1 addition & 10 deletions test/testIntegrationProtocolDelimiter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include "finalmq/protocols/protocolhelpers/ProtocolDelimiter.h"
#include "finalmq/protocolsession/ProtocolRegistry.h"
#include "testHelper.h"
#include "matchers.h"

#include <thread>
//#include <chrono>
Expand Down Expand Up @@ -84,16 +85,6 @@ struct RegisterProtocolDelimiterTestLongFactory





MATCHER_P(ReceivedMessage, msg, "")
{
BufferRef buffer = arg->getReceivePayload();
std::string str(buffer.first, buffer.second);
return str == msg;
}


class TestIntegrationProtocolDelimiterSessionContainer: public testing::Test
{
public:
Expand Down
Loading

0 comments on commit 7548105

Please sign in to comment.