diff --git a/tests/ADC/test_ADC.cpp b/tests/ADC/test_ADC.cpp index c077306..b9abb6a 100644 --- a/tests/ADC/test_ADC.cpp +++ b/tests/ADC/test_ADC.cpp @@ -37,28 +37,52 @@ TEST(test_ADC, FirstTest) CHECK(true); } -static void ADCStoresPortState(void){ - mock().expectOneCall("RegEdit_ReadReg") - .withPointerParameter("reg", (void *) &PORTA.OUT) - .andReturnValue(0xFF); - mock().expectOneCall("RegEdit_ReadReg") - .withPointerParameter("reg", (void *) &PORTA.DIR) - .andReturnValue(0xFF); +TEST(test_ADC, ADC_SetupSetsRegisters) +{ + //Clears control register A for ADC0 + mock().expectOneCall("RegEdit_SetNum") + .withPointerParameter("reg", (void *) &ADC0.CTRLA) + .withUnsignedIntParameter("num", 0x00); + + //Sets The sample accumulation number to 32. + mock().expectOneCall("RegEdit_SetNum") + .withPointerParameter("reg", (void *) &ADC0.CTRLB) + .withUnsignedIntParameter("num", 0x5); + + //Sets the voltage reference to VDD or VCC. + mock().expectOneCall("RegEdit_SetBit") + .withPointerParameter("reg", (void *) &ADC0.CTRLC) + .withUnsignedIntParameter("bit_num", 4); + + //Sets the pre-scalar for the adc sample rate. + mock().expectOneCall("RegEdit_SetBit") + .withPointerParameter("reg", (void *) &ADC0.CTRLC) + .withUnsignedIntParameter("bit_num", 2); + + //Setup an Initalization delay. + mock().expectOneCall("RegEdit_OR_Num") + .withPointerParameter("reg", (void *) &ADC0.CTRLD) + .withUnsignedIntParameter("num", (2<<5)); + + //Set the bit for ADC variation during readings. + mock().expectOneCall("RegEdit_SetBit") + .withPointerParameter("reg", (void *) &ADC0.CTRLD) + .withUnsignedIntParameter("bit_num", 4); + + ADC_Setup(); } TEST(test_ADC, ADC_InitPortAPin7UsesCorrectRegisters) { - ADCStoresPortState(); - //Check for setting the direction to input. - mock().expectOneCall("RegEdit_SetBit") - .withPointerParameter("reg", (void *) &PORTA.DIRCLR) + mock().expectOneCall("RegEdit_ClearBit") + .withPointerParameter("reg", (void *) &PORTA.DIR) .withUnsignedIntParameter("bit_num", 7); //Check that the pullup is off - mock().expectOneCall("RegEdit_SetBit") - .withPointerParameter("reg", (void *) &PORTA.OUTCLR) + mock().expectOneCall("RegEdit_ClearBit") + .withPointerParameter("reg", (void *) &PORTA.OUT) .withUnsignedIntParameter("bit_num", 7); //Set the ISC(input sense config) to disable digital input @@ -74,16 +98,14 @@ TEST(test_ADC, ADC_InitPortAPin7UsesCorrectRegisters) TEST(test_ADC, ADC_InitPortAPin0UsesCorrectRegisters) { - ADCStoresPortState(); - //Check for setting the direction to input. - mock().expectOneCall("RegEdit_SetBit") - .withPointerParameter("reg", (void *) &PORTA.DIRCLR) + mock().expectOneCall("RegEdit_ClearBit") + .withPointerParameter("reg", (void *) &PORTA.DIR) .withUnsignedIntParameter("bit_num", 0); //Check that the pullup is off - mock().expectOneCall("RegEdit_SetBit") - .withPointerParameter("reg", (void *) &PORTA.OUTCLR) + mock().expectOneCall("RegEdit_ClearBit") + .withPointerParameter("reg", (void *) &PORTA.OUT) .withUnsignedIntParameter("bit_num", 0); //Set the ISC(input sense config) to disable digital input @@ -92,6 +114,7 @@ TEST(test_ADC, ADC_InitPortAPin0UsesCorrectRegisters) .withPointerParameter("reg", (void *) &PORTA.PIN0CTRL) .withUnsignedIntParameter("bit_num", PORT_ISC_INPUT_DISABLE_gc); + ADC_Init(0); } @@ -101,51 +124,45 @@ TEST(test_ADC, ADC_InitDoesNothingOnHighPinNumbers) ADC_Init(8); } -TEST(test_ADC, ADC_EnableSuccessOnPin7) +TEST(test_ADC, ADC_EnablePasses) { - //Set the MUXPOS or the ADC pin stuff. - mock().expectOneCall("RegEdit_OR_Num") - .withPointerParameter("reg", (void *) &ADC0.MUXPOS) - .withUnsignedIntParameter("num", ADC_MUXPOS_AIN7_gc); - mock().expectOneCall("RegEdit_SetBit") .withPointerParameter("reg", (void *) &ADC0.CTRLA) .withUnsignedIntParameter("bit_num", 0); - ADC_Enable(7); + ADC_Enable(); } - -TEST(test_ADC, ADC_EnableNothingOnHighPinNumbers) -{ - - mock().expectNoCall("RegEdit_SetBit"); - ADC_Enable(8); -} - TEST(test_ADC, ADC_DisablePasses) { - //Clears the muxpos register - mock().expectOneCall("RegEdit_ClearRegister") - .withPointerParameter("reg", (void *) &ADC0.MUXPOS); - mock().expectOneCall("RegEdit_ClearBit") .withPointerParameter("reg", (void *) &ADC0.CTRLA) .withUnsignedIntParameter("bit_num", 0); - - mock().expectOneCall("RegEdit_SetNum") - .withPointerParameter("reg", (void*) &PORTA.OUT) - .ignoreOtherParameters(); - - mock().expectOneCall("RegEdit_SetNum") - .withPointerParameter("reg", (void*) &PORTA.DIR) - .ignoreOtherParameters(); ADC_Disable(); } +TEST(test_ADC, ADC_SetPinSetsRightRegisters) +{ + //It clears existing MUXPOS register values. + mock().expectOneCall("RegEdit_ClearRegister") + .withPointerParameter("reg", (void *) &ADC0.MUXPOS); + + //It Correctly sets the pin number. + mock().expectOneCall("RegEdit_SetNum") + .withPointerParameter("reg", (void *) &ADC0.MUXPOS) + .withUnsignedIntParameter("num", 4); + + ADC_SetPin(4); +} + + +TEST(test_ADC, ADC_SetPinFailsOnInvalidPin) +{ + ADC_SetPin(8); +} static uint16_t ADC_ReadValueFake(uint8_t pin_num) diff --git a/tests/MockADC/test_MockADC.cpp b/tests/MockADC/test_MockADC.cpp index 45380c2..8b0b5ee 100644 --- a/tests/MockADC/test_MockADC.cpp +++ b/tests/MockADC/test_MockADC.cpp @@ -30,17 +30,16 @@ TEST_GROUP(test_MockADC) TEST(test_MockADC, ADC_InitExpects) { mock().expectOneCall("ADC_Init") - .withUnsignedIntParameter("pin_num", 0x2); + .withUnsignedIntParameter("pin_num", 7); - ADC_Init(0x2); + ADC_Init(7); } TEST(test_MockADC, ADC_EnableExpects) { - mock().expectOneCall("ADC_Enable") - .withUnsignedIntParameter("pin_num", 0x2); + mock().expectOneCall("ADC_Enable"); - ADC_Enable(0x2); + ADC_Enable(); } @@ -84,3 +83,12 @@ TEST(test_MockADC, MockADC_PushValueDoesntOverflowArray) CHECK_TRUE(MockADC_GetIndex() <= 255); } } + +TEST(test_MockADC, MockADC_SetupSetsGlobal) +{ + CHECK_FALSE(MockADC_IsSetup()); + + ADC_Setup(); + + CHECK_TRUE(MockADC_IsSetup()); +} diff --git a/tests/zero_cross_detection/test_zero_cross_detection.cpp b/tests/zero_cross_detection/test_zero_cross_detection.cpp index 5bb17ab..2b7d6e5 100644 --- a/tests/zero_cross_detection/test_zero_cross_detection.cpp +++ b/tests/zero_cross_detection/test_zero_cross_detection.cpp @@ -38,8 +38,7 @@ static void ZCDSetupExpectations(void) mock().expectOneCall("ADC_Init") .withUnsignedIntParameter("pin_num", 7); - mock().expectOneCall("ADC_Enable") - .withUnsignedIntParameter("pin_num", 7); + mock().expectOneCall("ADC_Enable"); }