① 영역 - 실행 여부를 확인하고 싶은 코드를 세미콜론(;)을 제외하고 작성합니다.
② 영역 - 해당 코드가 실행되어야 하는 최소 횟수를 작성합니다.
EXPECT_CALL(*arduinoMock,_(1)_.Times(AtLeast(_(2)_));--------------------// 예시 1: 13번 핀을 출력으로 설정하는 코드를 1번 이상 실행했는가?EXPECT_CALL(*arduinoMock,pinMode(13, OUTPUT).Times(AtLeast(1));// 예시 2: 시간에 상관없이, 실행을 일시 중지하는 코드를 2번 이상 실행했는가?EXPECT_CALL(*arduinoMock,delay(_)).Times(AtLeast(2));
⚠️ Serial 통신 관련 코드를 확인해야 할 경우, 코드 앞의 Serial. 부분을 제외하고 나머지만 작성합니다.
// 예시 1: 시리얼 통신 값을 9600으로 설정하는 코드를 1번 이상 실행했는가?EXPECT_CALL(*arduinoMock,begin(9600)).Times(AtLeast(1));// 예시 2: 시리얼 통신으로 "LED ON"이라는 문자열을 (줄 바꿈을 포함해서) 출력하는 코드를 1번 이상 실행했는가?EXPECT_CALL(*arduinoMock,println("LED ON")).Times(AtLeast(1));
채점을 진행해야 하는 함수의 영역에 따라 setup(); 또는 loop(); 를 설정합니다.
setup() 함수 내의 코드를 확인하고 싶다면?
→ setup();만 남겨놓고 loop(); 삭제
loop() 함수 내의 코드를 확인하고 싶다면?
→ loop();만 남겨놓고 setup(); 삭제
⚠️ setup() 함수와 loop() 함수는 동시에 코드를 확인할 수 없습니다. 아래 예시처럼, setup();과 loop();를 각각 분할하여 테스트케이스를 작성해야 합니다.
① 영역 - 사용하는 센서가 값을 측정하는 코드를 세미콜론(;)을 제외하고 작성합니다.
② 영역 - 해당 센서가 측정하는 값을 가정해서 작성합니다.
EXPECT_CALL(*arduinoMock,_(1)_.WillOnce(Return(_(2)_));--------------------// 예시 1: 만약 2번 핀에서 HIGH(1) 값을 감지했을 때...EXPECT_CALL(*arduinoMock,digitalRead(2)).WillOnce(Return(1));// 예시 2: 만약 ECHO(초음파 센서)에서 1000(약 17cm) 값을 감지했을 때...EXPECT_CALL(*arduinoMock,pulseIn(ECHO, HIGH)).WillOnce(Return(1000));
① 영역 - 실행 여부를 확인하고 싶은 코드를 세미콜론(;)을 제외하고 작성합니다.
② 영역 - 해당 코드가 실행되어야 하는 최소 횟수를 작성합니다.
EXPECT_CALL(*arduinoMock,_(1)_.Times(AtLeast(_(2)_));--------------------// 예시 1: ...buzzer로 262Hz(C4) 소리를 200ms 동안 재생하는 코드를 1번 이상 실행했는가?EXPECT_CALL(*arduinoMock,tone(9,262,200)).Times(AtLeast(1));// 예시 2: ...색상에 상관없이, RGB LED를 점멸하는 코드를 2번 이상 실행했는가?EXPECT_CALL(*arduinoMock,analogWrite(RED, _)).Times(AtLeast(2));EXPECT_CALL(*arduinoMock,analogWrite(GREEN, _)).Times(AtLeast(2));EXPECT_CALL(*arduinoMock,analogWrite(BLUE, _)).Times(AtLeast(2));
⚠️ Serial 통신 관련 코드를 확인해야 할 경우, 코드 앞의 Serial. 부분을 제외하고 나머지만 작성합니다.
// 예시 1: 시리얼 통신 값을 9600으로 설정하는 코드를 1번 이상 실행했는가?EXPECT_CALL(*arduinoMock,begin(9600)).Times(AtLeast(1));// 예시 2: 시리얼 통신으로 "LED ON"이라는 문자열을 (줄 바꿈을 포함해서) 출력하는 코드를 1번 이상 실행했는가?EXPECT_CALL(*arduinoMock,println("LED ON")).Times(AtLeast(1));