vector<unsigned char>
numaralı telefonu alan ve const char *
numaralı telefona geri döndüren bir birim test sınıfı için küçük bir yardımcı işlev geliştirdim. Bunu yazdım, böylece basit karşılaştırmalar için gtest'in ASSERT_STREQ
makrosuna iletebilirim.C++ işlev dönen const karakter *
const char * convertVecToChar(std::vector<unsigned char>& source)
{
std::vector<unsigned char>::size_type size = source.size();
char* data = (char*)malloc(sizeof(char) * (size + 1));
memcpy(data, &source[0], size);
data[size] = 0;
return data;
}
Ve işte çağrıldığını bir örnek: İşte burada
ASSERT_STREQ("de", convertVecToChar(somevector));
ben daha yolda delete
uğramadan malloc
çağırarak, ama kulüpler olarak bu ancak sızdıran olduğunu tahmin?
Bunu yapmanın daha zarif bir yolu var, bu da bir ASSERT_STREQ
numaralı çağrıyı her test için ayrı bir const char *
değişkeni oluşturmayı içermiyor mu?
Tüm yanıtlar için şimdiden teşekkür ederiz.
Chris
Kullanım 'free()' malloc 'sonra()' değil, 'delete'. İlginç bir soru için – hmjd
+1. Yine de bir cevabım yok. Bu sadece birim testi için dev bir hack gibi görünüyor. Bir ASSERT_VECEQ oluşturmayı düşündünüz mü? Ayrıca, ünite testlerinde hafıza sızıntılarına fazla önem vermemelisiniz. –
Tamam, bana bildirdiğiniz için teşekkürler. –