From c2bba5b142dab886a5eaa6a4303df30e9bd505ca Mon Sep 17 00:00:00 2001 From: swateeshrivastava Date: Mon, 21 Jan 2019 15:07:33 +0530 Subject: [PATCH] UT for ocmp_debug --- .../src/devices/ocmp_wrappers/ocmp_debugi2c.c | 2 +- firmware/ec/test/Makefile | 4 +- firmware/ec/test/fake/fake_debugI2C.c | 29 ++++++++ firmware/ec/test/include/test_debugI2c.h | 35 +++++++++ firmware/ec/test/suites/Doc/TestCaseList.xlsx | Bin 42114 -> 43481 bytes firmware/ec/test/suites/Test_ocmp_debugi2c.c | 69 ++++++++++++++++++ 6 files changed, 137 insertions(+), 2 deletions(-) create mode 100644 firmware/ec/test/fake/fake_debugI2C.c create mode 100644 firmware/ec/test/include/test_debugI2c.h create mode 100644 firmware/ec/test/suites/Test_ocmp_debugi2c.c diff --git a/firmware/ec/src/devices/ocmp_wrappers/ocmp_debugi2c.c b/firmware/ec/src/devices/ocmp_wrappers/ocmp_debugi2c.c index bb271bb075..27adbfb06a 100644 --- a/firmware/ec/src/devices/ocmp_wrappers/ocmp_debugi2c.c +++ b/firmware/ec/src/devices/ocmp_wrappers/ocmp_debugi2c.c @@ -6,10 +6,10 @@ * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ -#include "inc/ocmp_wrappers/ocmp_debugi2c.h" #include "common/inc/global/ocmp_frame.h" #include "common/inc/global/Framework.h" +#include "common/inc/ocmp_wrappers/ocmp_debugi2c.h" #include "inc/common/global_header.h" #include "inc/common/i2cbus.h" #include "inc/devices/debug_oci2c.h" diff --git a/firmware/ec/test/Makefile b/firmware/ec/test/Makefile index 82b6446700..69a7b1f4fa 100644 --- a/firmware/ec/test/Makefile +++ b/firmware/ec/test/Makefile @@ -178,10 +178,12 @@ $(PATHB)Test_ocmp_cat24c04$(TARGET_EXTENSION): $(STD_FILES) $(TEST_OCMP_CAT24C04 TEST_OCMP_LTC4275_SRC=$(OCWARE_ROOT)/src/devices/ocmp_wrappers/ocmp_ltc4275.c $(OCWARE_ROOT)/src/devices/ltc4275.c $(OCWARE_ROOT)/src/devices/i2cbus.c $(OCWARE_ROOT)/src/post/post_util.c fake/fake_GPIO.c fake/fake_I2C.c fake/fake_ThreadedISR.c fake/fake_ltc4275.c stub/stub_GateMutex.c $(OCWARE_ROOT)/platform/oc-sdr/cfg/OC_CONNECT_GBC.c $(PATHB)Test_ocmp_ltc4275$(TARGET_EXTENSION): $(STD_FILES) $(TEST_OCMP_LTC4275_SRC) $(INC_M) - TEST_LTC4274_SRC=$(OCWARE_ROOT)/src/devices/ltc4274.c $(OCWARE_ROOT)/src/devices/i2cbus.c fake/fake_GPIO.c fake/fake_I2C.c fake/fake_ThreadedISR.c fake/fake_ltc4274.c stub/stub_GateMutex.c $(OCWARE_ROOT)/src/post/post_util.c $(OCWARE_ROOT)/platform/oc-sdr/cfg/OC_CONNECT_GBC.c $(PATHB)Test_ltc4274$(TARGET_EXTENSION): $(STD_FILES) $(TEST_LTC4274_SRC) $(INC_M) +TEST_OCMP_DEBUGI2C_SRC=$(OCWARE_ROOT)/src/devices/ocmp_wrappers/ocmp_debugi2c.c $(OCWARE_ROOT)/src/devices/i2cbus.c fake/fake_GPIO.c fake/fake_I2C.c fake/fake_ThreadedISR.c fake/fake_debugI2C.c $(OCWARE_ROOT)/platform/oc-sdr/cfg/OC_CONNECT_GBC.c +$(PATHB)Test_ocmp_debugi2c$(TARGET_EXTENSION): $(STD_FILES) $(TEST_OCMP_DEBUGI2C_SRC) + $(PATHB)%$(TARGET_EXTENSION): $(C_COMPILER) $(CFLAGS) $(INC_DIRS) $(SYMBOLS) $^ -o $@ $(COV_CMDS) diff --git a/firmware/ec/test/fake/fake_debugI2C.c b/firmware/ec/test/fake/fake_debugI2C.c new file mode 100644 index 0000000000..ade6e3120d --- /dev/null +++ b/firmware/ec/test/fake/fake_debugI2C.c @@ -0,0 +1,29 @@ +/** + * Copyright (c) 2017-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ +#include "include/test_debugI2c.h" + +S_I2C_Cfg I2C_INVALID_DEV = { + .bus = DEBUG_I2C_INVALID_BUS, +}; + +S_OCI2C s_oci2c = { .slaveAddress = DEBUG_I2C_SLAVE_ADDR, + .reg_address = DEBUG_I2C_REG_ADDR, + .reg_value = DEBUG_I2C_REG_VALUE, + .number_of_bytes = DEBUG_I2C_NO_OF_BYTES }; + +S_OCI2C s_oci2c_invalid = { .slaveAddress = DEBUG_I2C_INVALID_SLAVE_ADDR, + .reg_address = DEBUG_I2C_REG_ADDR, + .reg_value = DEBUG_I2C_REG_VALUE, + .number_of_bytes = DEBUG_I2C_NO_OF_BYTES }; + +uint8_t DEBUG_I2C_regs[] = { + [DEBUG_I2C_INTERRUPT_STATUS] = 0x00, + [DEBUG_I2C_INTERRUPT_MASK] = 0x00, + [DEBUG_I2C_END] = 0x00, +}; diff --git a/firmware/ec/test/include/test_debugI2c.h b/firmware/ec/test/include/test_debugI2c.h new file mode 100644 index 0000000000..fd0eaf466a --- /dev/null +++ b/firmware/ec/test/include/test_debugI2c.h @@ -0,0 +1,35 @@ +/** + * Copyright (c) 2017-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the BSD-style license found in the + * LICENSE file in the root directory of this source tree. An additional grant + * of patent rights can be found in the PATENTS file in the same directory. + */ +#ifndef _TEST_DEBUG_I2C_H +#define _TEST_DEBUG_I2C_H + +#include "common/inc/ocmp_wrappers/ocmp_debugi2c.h" +#include "fake/fake_GPIO.h" +#include "fake/fake_I2C.h" +#include "inc/devices/debug_oci2c.h" +#include +#include +#include "unity.h" + +#define DEBUG_I2C_DEFAULT_VALUE 0x00 +#define DEBUG_I2C_INVALID_BUS 10 +#define DEBUG_I2C_INVALID_SLAVE_ADDR 0x48 +#define DEBUG_I2C_NO_OF_BYTES 1 +#define DEBUG_I2C_READ_WRITE_VALUE 0x5A +#define DEBUG_I2C_REG_ADDR 0x01 +#define DEBUG_I2C_REG_VALUE 12 +#define DEBUG_I2C_SLAVE_ADDR 0x2F + +typedef enum DEBUGI2CRegs { + DEBUG_I2C_INTERRUPT_STATUS = 0x00, + DEBUG_I2C_INTERRUPT_MASK, + DEBUG_I2C_END = 0xFF, +} DEBUGI2CRegs; + +#endif diff --git a/firmware/ec/test/suites/Doc/TestCaseList.xlsx b/firmware/ec/test/suites/Doc/TestCaseList.xlsx index c230ef98d94fb844421a8577b13e0a8ae5a4657f..4bb300cc487c9c9f602c2bf9bb9a6dcfff456657 100644 GIT binary patch delta 13456 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%0A%F1N=`mV0jbUEzo2d1!+3* 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