diff --git a/Fw/FilePacket/FilePacket.hpp b/Fw/FilePacket/FilePacket.hpp index ad5a8bc149e..19f48465cc5 100644 --- a/Fw/FilePacket/FilePacket.hpp +++ b/Fw/FilePacket/FilePacket.hpp @@ -19,6 +19,12 @@ #include #include +// Forward declaration for UTs +namespace Svc { + class FileUplinkTester; + class FileDownlinkTester; +} + namespace Fw { //! \class FilePacket @@ -44,14 +50,16 @@ namespace Fw { //! The type of a path name class PathName { - friend union FilePacket; + friend union FilePacket; + friend class Svc::FileDownlinkTester; + friend class Svc::FileUplinkTester; public: //! The maximum length of a path name enum { MAX_LENGTH = 255 }; - PRIVATE: + private: //! The length U8 m_length; @@ -79,7 +87,7 @@ namespace Fw { return this->m_value; }; - PRIVATE: + private: //! Initialize this PathName from a SerialBuffer SerializeStatus fromSerialBuffer(SerialBuffer& serialBuffer); @@ -93,8 +101,11 @@ namespace Fw { class Header { friend union FilePacket; + friend class FilePacketTester; + friend class Svc::FileDownlinkTester; + friend class Svc::FileUplinkTester; - PRIVATE: + private: //! The packet type Type m_type; @@ -107,7 +118,7 @@ namespace Fw { //! Header size enum { HEADERSIZE = sizeof(U8) + sizeof(U32) }; - PRIVATE: + private: //! Initialize a file packet header void initialize( @@ -140,7 +151,7 @@ namespace Fw { friend union FilePacket; - PRIVATE: + private: //! The packet header Header m_header; @@ -169,6 +180,11 @@ namespace Fw { //! Convert this StartPacket to a Buffer SerializeStatus toBuffer(Buffer& buffer) const; + //! Get this as a Header + const FilePacket::Header& asHeader() const { + return this->m_header; + }; + //! Get the destination path const PathName& getDestinationPath() const { return this->m_destinationPath; @@ -183,7 +199,7 @@ namespace Fw { U32 getFileSize() const { return this->m_fileSize; }; - PRIVATE: + private: //! Initialize this StartPacket from a SerialBuffer SerializeStatus fromSerialBuffer(SerialBuffer& serialBuffer); @@ -197,8 +213,10 @@ namespace Fw { class DataPacket { friend union FilePacket; + friend class Svc::FileDownlinkTester; + friend class Svc::FileUplinkTester; - PRIVATE: + private: //! The packet header Header m_header; @@ -252,7 +270,7 @@ namespace Fw { const U8* getData() const { return this->m_data; }; - PRIVATE: + private: //! Initialize this DataPacket from a SerialBuffer SerializeStatus fromSerialBuffer(SerialBuffer& serialBuffer); @@ -269,8 +287,10 @@ namespace Fw { class EndPacket { friend union FilePacket; + friend class Svc::FileDownlinkTester; + friend class Svc::FileUplinkTester; - PRIVATE: + private: //! The packet header Header m_header; @@ -301,7 +321,7 @@ namespace Fw { const CFDP::Checksum& checksum //!< The checksum ); - PRIVATE: + private: //! The checksum U32 m_checksumValue; @@ -318,8 +338,10 @@ namespace Fw { class CancelPacket { friend union FilePacket; + friend class Svc::FileDownlinkTester; + friend class Svc::FileUplinkTester; - PRIVATE: + private: //! The packet header Header m_header; @@ -341,7 +363,7 @@ namespace Fw { const FilePacket::Header& asHeader() const { return this->m_header; }; - PRIVATE: + private: //! Initialize this CancelPacket from a SerialBuffer SerializeStatus fromSerialBuffer(SerialBuffer& serialBuffer); @@ -410,7 +432,7 @@ namespace Fw { //! SerializeStatus toBuffer(Buffer& buffer) const; - PRIVATE: + private: // ---------------------------------------------------------------------- // Private methods @@ -420,7 +442,7 @@ namespace Fw { //! SerializeStatus fromSerialBuffer(SerialBuffer& serialBuffer); - PRIVATE: + private: // ---------------------------------------------------------------------- // Private data diff --git a/Fw/FilePacket/GTest/CancelPacket.cpp b/Fw/FilePacket/GTest/CancelPacket.cpp index b9a900a06b7..ef9ecafbc52 100644 --- a/Fw/FilePacket/GTest/CancelPacket.cpp +++ b/Fw/FilePacket/GTest/CancelPacket.cpp @@ -22,7 +22,7 @@ namespace Fw { const FilePacket::CancelPacket& actual ) { - FilePackets::Header::compare(expected.m_header, actual.m_header); + FilePackets::Header::compare(expected.asHeader(), actual.asHeader()); } } diff --git a/Fw/FilePacket/GTest/DataPacket.cpp b/Fw/FilePacket/GTest/DataPacket.cpp index 4939a4b0ec6..0e4df79de18 100644 --- a/Fw/FilePacket/GTest/DataPacket.cpp +++ b/Fw/FilePacket/GTest/DataPacket.cpp @@ -23,10 +23,10 @@ namespace Fw { const FilePacket::DataPacket& actual ) { - FilePackets::Header::compare(expected.m_header, actual.m_header); - ASSERT_EQ(expected.m_byteOffset, actual.m_byteOffset); - Bytes expectedData(expected.m_data, expected.m_dataSize); - Bytes actualData(actual.m_data, actual.m_dataSize); + FilePackets::Header::compare(expected.asHeader(), actual.asHeader()); + ASSERT_EQ(expected.getByteOffset(), actual.getByteOffset()); + Bytes expectedData(expected.getData(), expected.getDataSize()); + Bytes actualData(actual.getData(), actual.getDataSize()); Bytes::compare(expectedData, actualData); } diff --git a/Fw/FilePacket/GTest/EndPacket.cpp b/Fw/FilePacket/GTest/EndPacket.cpp index f2b37b817ed..58975ea2c15 100644 --- a/Fw/FilePacket/GTest/EndPacket.cpp +++ b/Fw/FilePacket/GTest/EndPacket.cpp @@ -24,7 +24,7 @@ namespace Fw { const FilePacket::EndPacket& actual ) { - FilePackets::Header::compare(expected.m_header, actual.m_header); + FilePackets::Header::compare(expected.asHeader(), actual.asHeader()); CFDP::Checksum expectedChecksum; CFDP::Checksum actualChecksum; expected.getChecksum(expectedChecksum); diff --git a/Fw/FilePacket/GTest/Header.cpp b/Fw/FilePacket/GTest/Header.cpp index b20f231d607..7e80cf971ab 100644 --- a/Fw/FilePacket/GTest/Header.cpp +++ b/Fw/FilePacket/GTest/Header.cpp @@ -22,8 +22,8 @@ namespace Fw { const FilePacket::Header& actual ) { - ASSERT_EQ(expected.m_type, actual.m_type); - ASSERT_EQ(expected.m_sequenceIndex, actual.m_sequenceIndex); + ASSERT_EQ(expected.getType(), actual.getType()); + ASSERT_EQ(expected.getSequenceIndex(), actual.getSequenceIndex()); } } diff --git a/Fw/FilePacket/GTest/PathName.cpp b/Fw/FilePacket/GTest/PathName.cpp index c25037b1be5..5fb2ac9e7f0 100644 --- a/Fw/FilePacket/GTest/PathName.cpp +++ b/Fw/FilePacket/GTest/PathName.cpp @@ -23,14 +23,14 @@ namespace Fw { const FilePacket::PathName& actual ) { - ASSERT_EQ(expected.m_length, actual.m_length); + ASSERT_EQ(expected.getLength(), actual.getLength()); Bytes expectedPath( - reinterpret_cast(expected.m_value), - expected.m_length + reinterpret_cast(expected.getValue()), + expected.getLength() ); Bytes actualPath( - reinterpret_cast(actual.m_value), - actual.m_length + reinterpret_cast(actual.getValue()), + actual.getLength() ); Bytes::compare(expectedPath, actualPath); } diff --git a/Fw/FilePacket/GTest/StartPacket.cpp b/Fw/FilePacket/GTest/StartPacket.cpp index 6c2bb1210f5..52a7ebbd370 100644 --- a/Fw/FilePacket/GTest/StartPacket.cpp +++ b/Fw/FilePacket/GTest/StartPacket.cpp @@ -23,10 +23,10 @@ namespace Fw { const FilePacket::StartPacket& actual ) { - FilePackets::Header::compare(expected.m_header, actual.m_header); - ASSERT_EQ(expected.m_fileSize, actual.m_fileSize); - PathName::compare(expected.m_sourcePath, actual.m_sourcePath); - PathName::compare(expected.m_destinationPath, actual.m_destinationPath); + FilePackets::Header::compare(expected.asHeader(), actual.asHeader()); + ASSERT_EQ(expected.getFileSize(), actual.getFileSize()); + PathName::compare(expected.getSourcePath(), actual.getSourcePath()); + PathName::compare(expected.getDestinationPath(), actual.getDestinationPath()); } } diff --git a/Fw/FilePacket/test/ut/FilePacketMain.cpp b/Fw/FilePacket/test/ut/FilePacketMain.cpp index fdd0f0a8d98..02a8621cd64 100644 --- a/Fw/FilePacket/test/ut/FilePacketMain.cpp +++ b/Fw/FilePacket/test/ut/FilePacketMain.cpp @@ -1,5 +1,5 @@ // ---------------------------------------------------------------------- -// Main.cpp +// Main.cpp // ---------------------------------------------------------------------- #include @@ -11,30 +11,51 @@ namespace Fw { + class FilePacketTester{ + public: + // ---------------------------------------------------------------------- + // Construction and destruction + // ---------------------------------------------------------------------- + FilePacketTester(){} + + ~FilePacketTester(){} + + // ---------------------------------------------------------------------- + // Tests + // ---------------------------------------------------------------------- + void test_Header() + { + // const FilePacket::Header expected = { + // FilePacket::T_DATA, // Packet type + // 10 // Sequence number + // }; + Fw::FilePacket::Header expected; + expected.initialize(FilePacket::T_DATA, 10); + const U32 size = expected.bufferSize(); + U8 bytes[size]; + SerialBuffer serialBuffer(bytes, size); + { + const SerializeStatus status = + expected.toSerialBuffer(serialBuffer); + FW_ASSERT(status == FW_SERIALIZE_OK); + } + FilePacket::Header actual; + { + const SerializeStatus status = + actual.fromSerialBuffer(serialBuffer); + FW_ASSERT(status == FW_SERIALIZE_OK); + } + GTest::FilePackets::Header::compare( + expected, + actual + ); + } + }; + // Serialize and deserialize a file packet header TEST(FilePacket, Header) { - const FilePacket::Header expected = { - FilePacket::T_DATA, // Packet type - 10 // Sequence number - }; - const U32 size = expected.bufferSize(); - U8 bytes[size]; - SerialBuffer serialBuffer(bytes, size); - { - const SerializeStatus status = - expected.toSerialBuffer(serialBuffer); - FW_ASSERT(status == FW_SERIALIZE_OK); - } - FilePacket::Header actual; - { - const SerializeStatus status = - actual.fromSerialBuffer(serialBuffer); - FW_ASSERT(status == FW_SERIALIZE_OK); - } - GTest::FilePackets::Header::compare( - expected, - actual - ); + FilePacketTester tester; + tester.test_Header(); } @@ -51,20 +72,20 @@ namespace Fw { Buffer buffer(bytes, size); SerialBuffer serialBuffer(bytes, size); { - const SerializeStatus status = + const SerializeStatus status = expected.toBuffer(buffer); ASSERT_EQ(status, FW_SERIALIZE_OK); } FilePacket actual; { - const SerializeStatus status = + const SerializeStatus status = actual.fromBuffer(buffer); ASSERT_EQ(status, FW_SERIALIZE_OK); } const FilePacket::StartPacket& actualStartPacket = actual.asStartPacket(); GTest::FilePackets::StartPacket::compare( - expected, + expected, actualStartPacket ); } @@ -85,20 +106,20 @@ namespace Fw { Buffer buffer(bytes, size); SerialBuffer serialBuffer(bytes, size); { - const SerializeStatus status = + const SerializeStatus status = expected.toBuffer(buffer); FW_ASSERT(status == FW_SERIALIZE_OK); } FilePacket actual; { - const SerializeStatus status = + const SerializeStatus status = actual.fromBuffer(buffer); FW_ASSERT(status == FW_SERIALIZE_OK); } const FilePacket::DataPacket& actualDataPacket = actual.asDataPacket(); GTest::FilePackets::DataPacket::compare( - expected, + expected, actualDataPacket ); } @@ -116,20 +137,20 @@ namespace Fw { Buffer buffer(bytes, size); SerialBuffer serialBuffer(bytes, size); { - const SerializeStatus status = + const SerializeStatus status = expected.toBuffer(buffer); FW_ASSERT(status == FW_SERIALIZE_OK); } FilePacket actual; { - const SerializeStatus status = + const SerializeStatus status = actual.fromBuffer(buffer); FW_ASSERT(status == FW_SERIALIZE_OK); } const FilePacket::EndPacket& actualEndPacket = actual.asEndPacket(); GTest::FilePackets::EndPacket::compare( - expected, + expected, actualEndPacket ); } @@ -146,20 +167,20 @@ namespace Fw { Buffer buffer(bytes, size); SerialBuffer serialBuffer(bytes, size); { - const SerializeStatus status = + const SerializeStatus status = expected.toBuffer(buffer); FW_ASSERT(status == FW_SERIALIZE_OK); } FilePacket actual; { - const SerializeStatus status = + const SerializeStatus status = actual.fromBuffer(buffer); FW_ASSERT(status == FW_SERIALIZE_OK); } const FilePacket::CancelPacket& actualCancelPacket = actual.asCancelPacket(); GTest::FilePackets::CancelPacket::compare( - expected, + expected, actualCancelPacket ); } diff --git a/Svc/FileUplink/test/ut/FileUplinkTester.cpp b/Svc/FileUplink/test/ut/FileUplinkTester.cpp index fcd6403e490..5e81b6a7ac8 100644 --- a/Svc/FileUplink/test/ut/FileUplinkTester.cpp +++ b/Svc/FileUplink/test/ut/FileUplinkTester.cpp @@ -654,12 +654,15 @@ namespace Svc { U8 *const packetData ) { - const Fw::FilePacket::DataPacket dataPacket = { - { Fw::FilePacket::T_DATA, this->sequenceIndex++ }, - static_cast(byteOffset), - PACKET_SIZE, - packetData - }; + Fw::FilePacket::DataPacket tempDataPacket; + tempDataPacket.initialize( + this->sequenceIndex++, + static_cast(byteOffset), + PACKET_SIZE, + packetData + ); + const Fw::FilePacket::DataPacket dataPacket = tempDataPacket; + Fw::FilePacket filePacket; filePacket.fromDataPacket(dataPacket); this->sendFilePacket(filePacket); @@ -668,10 +671,10 @@ namespace Svc { void FileUplinkTester :: sendEndPacket(const CFDP::Checksum& checksum) { - const Fw::FilePacket::Header header = { - Fw::FilePacket::T_END, - this->sequenceIndex++ - }; + Fw::FilePacket::Header tempHeader; + tempHeader.initialize(Fw::FilePacket::T_END, this->sequenceIndex++); + const Fw::FilePacket::Header header = tempHeader; + Fw::FilePacket::EndPacket endPacket; endPacket.m_header = header; endPacket.setChecksum(checksum); @@ -683,11 +686,15 @@ namespace Svc { void FileUplinkTester :: sendCancelPacket() { - const Fw::FilePacket::Header header = { - Fw::FilePacket::T_CANCEL, - this->sequenceIndex++ - }; - const Fw::FilePacket::CancelPacket cancelPacket = { header }; + Fw::FilePacket::Header tmpHeader; + tmpHeader.initialize(Fw::FilePacket::T_CANCEL, this->sequenceIndex++); + const Fw::FilePacket::Header header = tmpHeader; + + Fw::FilePacket::CancelPacket tmpCancelPacket; + tmpCancelPacket.initialize(header.getSequenceIndex()); + tmpCancelPacket.m_header = header; + const Fw::FilePacket::CancelPacket cancelPacket = tmpCancelPacket; + Fw::FilePacket filePacket; filePacket.fromCancelPacket(cancelPacket); this->sendFilePacket(filePacket);