Bonjour,
J'ai pas mal de problèmes avec CxxTest. J'ai lu la documentation bien que certains points me soient restés très obscurs...
Je dois tester la classe : GspCcsdsPacketHeader.hpp.
J'ai créé une classe : MySuite.hpp qui contient les fonctions de tests et les fonctions setUp et tearDown.
Exemple de quelques tests définis dans la classe :
Ensuite j'ai créé un .bat pour générer MySuite.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 #ifndef MYSUITE_H_ #define MYSUITE_H_ #include "cxxtest/TestSuite.h" #include <Rpw/Structures/GspCcsdsPacketHeader.hpp> class MySuite : public CxxTest::TestSuite { private: static const int BUFFER_SIZE = 5 * 1024; unsigned char packetBuffer1[BUFFER_SIZE]; CcsdsPacketHeader<PacketHeaderType::TM_PACKET, PacketHeaderFlag::WITH_HEADER> *ccsdsPacketHeader1; public: void setUp() { ccsdsPacketHeader1 = new (packetBuffer1) CcsdsPacketHeader<PacketHeaderType::TM_PACKET, PacketHeaderFlag::WITH_HEADER> ; for (int i = 0; i < BUFFER_SIZE; i++) { packetBuffer1[i] = 0; } } void tearDown() { } void resetPacketBuffer(unsigned char value, int bufferSize, unsigned char *packetBuffer ) { for (int i = 0; i < bufferSize; i++) { packetBuffer[i] = value; } } void testGspCcsdsPacketHeader_setPacketId() { ccsdsPacketHeader1->setPacketId(0x1234); TS_ASSERT_EQUALS(packetBuffer1[0],0x12); TS_ASSERT_EQUALS(packetBuffer1[0],0x12); TS_ASSERT_EQUALS(packetBuffer1[1],0x34); ccsdsPacketHeader1->setPacketId(0x5678); TS_ASSERT_EQUALS(packetBuffer1[0],0x56); TS_ASSERT_EQUALS(packetBuffer1[1],0x78); } void testGspCcsdsPacketHeader_getPacketId() { unsigned short packetId = ccsdsPacketHeader1->getPacketId(); TS_ASSERT_EQUALS(packetId,0x5678); } void testGspPacketHeader_setCcsdsVersionNumber() { resetPacketBuffer(0xFF,BUFFER_SIZE,packetBuffer1); CcsdsVersionNumberType::CcsdsVersionNumberTypeEnum ccsdsVersionNumber = CcsdsVersionNumberType::CCSDS_VERSION_NUMBER; ccsdsPacketHeader1->setCcsdsVersionNumber(ccsdsVersionNumber); // Set TS_ASSERT_EQUALS(packetBuffer1[0], 0x1F); // The first three bits equal to 0 (Version Number) } }; #endif /* MYSUITE_H_ */
J'ai été obligée de mettre les chemins absolus. De plus, je ne peux pas mettre d'autres options, comme --error-printer, ça me fait une erreur ensuite dans le main sur MySuite.cpp, auquel je n'y comprends rien du tout -.-
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 set CYGWIN=nodosfilewarning echo COUCOU_LE_MONDE c:\cygwin\bin\python.exe C:\opt\cxxtest-4.0.3\cxxtest\bin\cxxtestgen -o C:\home\leeroy-ma\workspace\CxxtestTester\src\MySuite.cpp C:\home\leeroy-ma\workspace\CxxtestTester\src\MySuite.hpp pause
J'ai configuré Eclipse de sorte à ce que ce .bat soit exécuté en prebuild.
Quand j'essaie ensuite de l'exécuter, il me donne bien MySuite.cpp au bon endroit.
Par contre quand j'essaie de compiler tout le programme complet, j'ai l'indication de 5 erreurs dans des fichiers fournis par cxxtest (que je ne dois donc pas toucher ....) :
1. `numberToString' undeclared (first use this function) dans \Descriptions.cpp
2. `RealSuiteDescription' has not been declared dans \LinkedList.cpp
3. `template<class N> char* CxxTest::numberToString(N, char*, N, unsigned int, unsigned int)' used prior to declaration dans \ValueTraits.h
4. aggregate `std::ifstream is1' has incomplete type and cannot be defined dans \TestSuite.cpp
5. aggregate `std::ifstream is2' has incomplete type and cannot be defined dans \TestSuite.cpp
Y-a-t-il quelque chose que j'ai mal fait ? Ai-je bien suivi les procédures pour mettre en place cxxtest ?
Merci par avance pour votre aide.
Partager