byte_string_unittest.cc revision 3ecfa2b733afbc39696102467d9eed827028265d
13ecfa2b733afbc39696102467d9eed827028265dPaul Stewart// Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 23ecfa2b733afbc39696102467d9eed827028265dPaul Stewart// Use of this source code is governed by a BSD-style license that can be 33ecfa2b733afbc39696102467d9eed827028265dPaul Stewart// found in the LICENSE file. 43ecfa2b733afbc39696102467d9eed827028265dPaul Stewart 53ecfa2b733afbc39696102467d9eed827028265dPaul Stewart#include <endian.h> 63ecfa2b733afbc39696102467d9eed827028265dPaul Stewart 73ecfa2b733afbc39696102467d9eed827028265dPaul Stewart#include <gtest/gtest.h> 83ecfa2b733afbc39696102467d9eed827028265dPaul Stewart 93ecfa2b733afbc39696102467d9eed827028265dPaul Stewart#include "shill/byte_string.h" 103ecfa2b733afbc39696102467d9eed827028265dPaul Stewart 113ecfa2b733afbc39696102467d9eed827028265dPaul Stewartusing testing::Test; 123ecfa2b733afbc39696102467d9eed827028265dPaul Stewart 133ecfa2b733afbc39696102467d9eed827028265dPaul Stewartnamespace shill { 143ecfa2b733afbc39696102467d9eed827028265dPaul Stewart 153ecfa2b733afbc39696102467d9eed827028265dPaul Stewartnamespace { 163ecfa2b733afbc39696102467d9eed827028265dPaul Stewartconst unsigned char kTest1[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 173ecfa2b733afbc39696102467d9eed827028265dPaul Stewartconst unsigned char kTest2[] = { 1, 2, 3, 4 }; 183ecfa2b733afbc39696102467d9eed827028265dPaul Stewartconst unsigned char kTest3[] = { 0, 0, 0, 0 }; 193ecfa2b733afbc39696102467d9eed827028265dPaul Stewart} // namespace {} 203ecfa2b733afbc39696102467d9eed827028265dPaul Stewart 213ecfa2b733afbc39696102467d9eed827028265dPaul Stewartclass ByteStringTest : public Test { 223ecfa2b733afbc39696102467d9eed827028265dPaul Stewart}; 233ecfa2b733afbc39696102467d9eed827028265dPaul Stewart 243ecfa2b733afbc39696102467d9eed827028265dPaul StewartTEST_F(ByteStringTest, Empty) { 253ecfa2b733afbc39696102467d9eed827028265dPaul Stewart uint32 val; 263ecfa2b733afbc39696102467d9eed827028265dPaul Stewart 273ecfa2b733afbc39696102467d9eed827028265dPaul Stewart ByteString bs1(0); 283ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_EQ(0, bs1.GetLength()); 293ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_TRUE(bs1.GetData() == NULL); 303ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_FALSE(bs1.ConvertToNetUInt32(&val)); 313ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_TRUE(bs1.IsZero()); 323ecfa2b733afbc39696102467d9eed827028265dPaul Stewart} 333ecfa2b733afbc39696102467d9eed827028265dPaul Stewart 343ecfa2b733afbc39696102467d9eed827028265dPaul StewartTEST_F(ByteStringTest, NonEmpty) { 353ecfa2b733afbc39696102467d9eed827028265dPaul Stewart ByteString bs1(kTest1, sizeof(kTest1)); 363ecfa2b733afbc39696102467d9eed827028265dPaul Stewart uint32 val; 373ecfa2b733afbc39696102467d9eed827028265dPaul Stewart 383ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_EQ(sizeof(kTest1), bs1.GetLength()); 393ecfa2b733afbc39696102467d9eed827028265dPaul Stewart for (unsigned int i = 0; i < sizeof(kTest1); i++) { 403ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_EQ(bs1.GetData()[i], kTest1[i]); 413ecfa2b733afbc39696102467d9eed827028265dPaul Stewart } 423ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_TRUE(bs1.GetData() != NULL); 433ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_FALSE(bs1.ConvertToNetUInt32(&val)); 443ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_FALSE(bs1.IsZero()); 453ecfa2b733afbc39696102467d9eed827028265dPaul Stewart 463ecfa2b733afbc39696102467d9eed827028265dPaul Stewart ByteString bs2(kTest2, sizeof(kTest2)); 473ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_EQ(sizeof(kTest2), bs2.GetLength()); 483ecfa2b733afbc39696102467d9eed827028265dPaul Stewart for (unsigned int i = 0; i < sizeof(kTest2); i++) { 493ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_EQ(bs2.GetData()[i], kTest2[i]); 503ecfa2b733afbc39696102467d9eed827028265dPaul Stewart } 513ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_TRUE(bs2.GetData() != NULL); 523ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_FALSE(bs2.IsZero()); 533ecfa2b733afbc39696102467d9eed827028265dPaul Stewart 543ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_FALSE(bs2.Equals(bs1)); 553ecfa2b733afbc39696102467d9eed827028265dPaul Stewart 563ecfa2b733afbc39696102467d9eed827028265dPaul Stewart ByteString bs3(kTest3, sizeof(kTest3)); 573ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_EQ(sizeof(kTest3), bs3.GetLength()); 583ecfa2b733afbc39696102467d9eed827028265dPaul Stewart for (unsigned int i = 0; i < sizeof(kTest3); i++) { 593ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_EQ(bs3.GetData()[i], kTest3[i]); 603ecfa2b733afbc39696102467d9eed827028265dPaul Stewart } 613ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_TRUE(bs3.GetData() != NULL); 623ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_TRUE(bs3.IsZero()); 633ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_FALSE(bs2.Equals(bs1)); 643ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_FALSE(bs3.Equals(bs1)); 653ecfa2b733afbc39696102467d9eed827028265dPaul Stewart 663ecfa2b733afbc39696102467d9eed827028265dPaul Stewart ByteString bs4(kTest1, sizeof(kTest1)); 673ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_TRUE(bs4.Equals(bs1)); 683ecfa2b733afbc39696102467d9eed827028265dPaul Stewart} 693ecfa2b733afbc39696102467d9eed827028265dPaul Stewart 703ecfa2b733afbc39696102467d9eed827028265dPaul StewartTEST_F(ByteStringTest, UInt32) { 713ecfa2b733afbc39696102467d9eed827028265dPaul Stewart ByteString bs1 = ByteString::CreateFromNetUInt32(0x1020304); 723ecfa2b733afbc39696102467d9eed827028265dPaul Stewart uint32 val; 733ecfa2b733afbc39696102467d9eed827028265dPaul Stewart 743ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_EQ(4, bs1.GetLength()); 753ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_TRUE(bs1.GetData() != NULL); 763ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_TRUE(bs1.ConvertToNetUInt32(&val)); 773ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_EQ(0x1020304, val); 783ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_FALSE(bs1.IsZero()); 793ecfa2b733afbc39696102467d9eed827028265dPaul Stewart 803ecfa2b733afbc39696102467d9eed827028265dPaul Stewart ByteString bs2(kTest2, sizeof(kTest2)); 813ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_TRUE(bs1.Equals(bs2)); 823ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_TRUE(bs2.ConvertToNetUInt32(&val)); 833ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_EQ(0x1020304, val); 843ecfa2b733afbc39696102467d9eed827028265dPaul Stewart 853ecfa2b733afbc39696102467d9eed827028265dPaul Stewart ByteString bs3 = ByteString::CreateFromCPUUInt32(0x1020304); 863ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_EQ(4, bs1.GetLength()); 873ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_TRUE(bs3.GetData() != NULL); 883ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_TRUE(bs3.ConvertToCPUUInt32(&val)); 893ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_EQ(0x1020304, val); 903ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_FALSE(bs3.IsZero()); 913ecfa2b733afbc39696102467d9eed827028265dPaul Stewart 923ecfa2b733afbc39696102467d9eed827028265dPaul Stewart#if __BYTE_ORDER == __LITTLE_ENDIAN 933ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_FALSE(bs1.Equals(bs3)); 943ecfa2b733afbc39696102467d9eed827028265dPaul Stewart#else 953ecfa2b733afbc39696102467d9eed827028265dPaul Stewart EXPECT_TRUE(bs1.Equals(bs3)); 963ecfa2b733afbc39696102467d9eed827028265dPaul Stewart#endif 973ecfa2b733afbc39696102467d9eed827028265dPaul Stewart} 983ecfa2b733afbc39696102467d9eed827028265dPaul Stewart 993ecfa2b733afbc39696102467d9eed827028265dPaul Stewart} // namespace shill 100