1 // Copyright (c) 2014 The Chromium OS Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include <stdio.h> 6 #include <gtest/gtest.h> 7 8 extern "C" { 9 #include "cras_types.h" 10 #include "buffer_share.h" 11 } 12 13 namespace { 14 15 class BufferShareTestSuite : public testing::Test{ 16 protected: 17 virtual void SetUp() { 18 } 19 20 virtual void TearDown() { 21 } 22 23 }; 24 25 TEST_F(BufferShareTestSuite, Create) { 26 buffer_share *dm = buffer_share_create(1024); 27 EXPECT_NE(static_cast<buffer_share *>(NULL), dm); 28 buffer_share_destroy(dm); 29 } 30 31 TEST_F(BufferShareTestSuite, AddRmDev) { 32 buffer_share *dm = buffer_share_create(1024); 33 int rc; 34 35 rc = buffer_share_add_id(dm, 0xf00, NULL); 36 EXPECT_EQ(0, rc); 37 rc = buffer_share_add_id(dm, 0xf00, NULL); 38 EXPECT_NE(0, rc); 39 40 rc = buffer_share_rm_id(dm, 0xf00); 41 EXPECT_EQ(0, rc); 42 rc = buffer_share_rm_id(dm, 0xf00); 43 EXPECT_NE(0, rc); 44 45 buffer_share_destroy(dm); 46 } 47 48 TEST_F(BufferShareTestSuite, AddManyDevs) { 49 buffer_share *dm = buffer_share_create(1024); 50 51 for (unsigned int i = 0; i < INITIAL_ID_SIZE; i++) 52 EXPECT_EQ(0, buffer_share_add_id(dm, 0xf00 + i, NULL)); 53 54 EXPECT_EQ(0, buffer_share_add_id(dm, 0xf00 + INITIAL_ID_SIZE, NULL)); 55 EXPECT_EQ(0, buffer_share_rm_id(dm, 0xf00 + INITIAL_ID_SIZE)); 56 57 for (unsigned int i = 0; i < INITIAL_ID_SIZE; i++) 58 EXPECT_EQ(0, buffer_share_rm_id(dm, 0xf00 + i)); 59 60 buffer_share_destroy(dm); 61 } 62 63 TEST_F(BufferShareTestSuite, OneDev) { 64 buffer_share *dm = buffer_share_create(1024); 65 int rc; 66 67 rc = buffer_share_add_id(dm, 0xf00, NULL); 68 EXPECT_EQ(0, rc); 69 70 buffer_share_offset_update(dm, 0xf00, 500); 71 EXPECT_EQ(500, buffer_share_get_new_write_point(dm)); 72 73 buffer_share_offset_update(dm, 0xf00, 500); 74 EXPECT_EQ(500, buffer_share_get_new_write_point(dm)); 75 76 buffer_share_offset_update(dm, 0xf00, 500); 77 EXPECT_EQ(500, buffer_share_get_new_write_point(dm)); 78 79 buffer_share_offset_update(dm, 0xf00, 500); 80 EXPECT_EQ(500, buffer_share_get_new_write_point(dm)); 81 82 buffer_share_destroy(dm); 83 } 84 85 TEST_F(BufferShareTestSuite, TwoDevs) { 86 buffer_share *dm = buffer_share_create(1024); 87 int rc; 88 89 rc = buffer_share_add_id(dm, 0xf00, NULL); 90 EXPECT_EQ(0, rc); 91 rc = buffer_share_add_id(dm, 0xf02, NULL); 92 EXPECT_EQ(0, rc); 93 94 buffer_share_offset_update(dm, 0xf00, 500); 95 EXPECT_EQ(0, buffer_share_get_new_write_point(dm)); 96 97 buffer_share_offset_update(dm, 0xf02, 750); 98 EXPECT_EQ(500, buffer_share_get_new_write_point(dm)); 99 100 buffer_share_offset_update(dm, 0xf00, 500); 101 EXPECT_EQ(250, buffer_share_get_new_write_point(dm)); 102 103 buffer_share_offset_update(dm, 0xf02, 750); 104 EXPECT_EQ(250, buffer_share_get_new_write_point(dm)); 105 106 buffer_share_offset_update(dm, 0xf00, 500); 107 EXPECT_EQ(500, buffer_share_get_new_write_point(dm)); 108 109 buffer_share_destroy(dm); 110 } 111 112 } // namespace 113 114 int main(int argc, char **argv) { 115 ::testing::InitGoogleTest(&argc, argv); 116 return RUN_ALL_TESTS(); 117 } 118