Je pourrais écrire des tests unitaires et les exécuter sur les plates-formes cibles, mais je n'ai pas le matériel nécessaire.
Vous pouvez configurer votre conception de manière à ce que les tests unitaires soient faciles à exécuter, indépendamment de la présence réelle de matériel. Vous pouvez le faire en utilisant l'injection de dépendances. Je peux faire abstraction de choses comme les interfaces matérielles en fournissant une classe d'interface de base à laquelle le code que je teste se réfère.
class IHw
{
public:
virtual void SendMsg1(const char* msg, size_t size) = 0;
virtual void RcvMsg2(Msg2Callback* callback) = 0;
...
};
Ensuite, je peux avoir l'implémentation concrète qui parle réellement au matériel :
class CHw : public IHw
{
public:
void SendMsg1(const char* msg, size_t size);
void RcvMsg2(Msg2Callback* callback);
};
Et je peux faire une version test de la souche :
class CTestHw : public IHw
{
public:
void SendMsg1(const char* msg, size_t);
void RcvMsg2(Msg2Callback* callback);
};
Alors mon code réel peut utiliser le Hw concret, mais je peux le simuler dans le code de test avec CTestHw.
class CSomeClassThatUsesHw
{
public:
void MyCallback(const char* msg, size_t size)
{
// process msg 2
}
void DoSomethingToHw()
{
hw->SendMsg1();
hw->RcvMsg2(&MyCallback);
}
private:
IHw* hw;
}
4 votes
@0A0D, ce n'est pas un dup. Cette question portait sur la manière de détecter l'endiannité de la plate-forme actuelle. L'OP veut vérifier si son code fonctionne correctement sur les plateformes BE et LE.
0 votes
@0A0D/@Chris : vous devez relire la question.
1 votes
@0A0D : Il ne s'agit pas de détecter l'endiveté de la plateforme. La question est de savoir comment être sûr qu'un code donné dépend de l'endianness.
0 votes
@sharptooth : Mes excuses, j'ai mal lu la question.
4 votes
@Chris Aucun des résultats de la première page de Google pour "test endianness" ne répond à ma question.
0 votes
@emddudley : pour éviter les liens lmgtfy maintenant et dans le futur, vous devriez exprimer dans votre question que googler n'a pas aidé. Dans ce cas, il ne trouve que la façon de détecter l'endianité au moment de l'exécution, et non la façon de tester votre logiciel sur différents matériels endian:ity.
0 votes
Maudit filtre à bulles. Google sait que je suis un développeur et me montre ces résultats en premier. Désolé.
0 votes
@emddudley : Il faudrait peut-être modifier la question pour exprimer le désir d'assurer l'interopérabilité des endians. C'est ce qui m'a fait trébucher au départ.
2 votes
@Chris : nope chris. Google sait I Je suis un développeur, et les liens les plus importants (tous ceux que j'ai vus, et j'ai regardé en bas de la liste) concernaient la détermination de l'endianness, pas le test de la sécurité du code endian.
1 votes
@0A0D J'ai ajouté quelques précisions en précisant que je cherche à vérifier, pas à mettre en œuvre.
0 votes
@emddudley : Comment transférez-vous les données entre les machines ? Je crois que TCP/IP utilise le big endian.
0 votes
@0A0D : Je suis principalement sous Windows, donc je fais un byteswapping de little- à big-endian. Le protocole de message que j'ai est en fait mixed-endian...
0 votes
Selon les plates-formes cibles, vous pouvez également vérifier les problèmes d'alignement.