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