Skip to content

Commit 2c78c9d

Browse files
Merge pull request #474 from bharatkedia/bharat_develop
#358: implementing test cases for PassiveBuzzerHelper
2 parents ada9695 + e490728 commit 2c78c9d

3 files changed

Lines changed: 120 additions & 28 deletions

File tree

pi4micronaut-utils/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,11 @@ dependencies {
4141
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.1'
4242
testImplementation 'org.junit.jupiter:junit-jupiter'
4343
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
44-
testImplementation("org.mockito:mockito-core:5.+")
44+
testImplementation("org.mockito:mockito-core:5.18.0")
4545
testImplementation(platform("org.junit:junit-bom:5.11.0"))
4646
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
4747
testRuntimeOnly("org.junit.vintage:junit-vintage-engine")
48-
48+
testImplementation("org.mockito:mockito-junit-jupiter:5.18.0")
4949
}
5050

5151
application {

pi4micronaut-utils/src/main/java/com/opensourcewithslu/outputdevices/PassiveBuzzerHelper.java

Lines changed: 12 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -99,11 +99,7 @@ public void setFrequencies(File frequenciesFile){
9999
if (frequency >= 20 && frequency <= 20000) {
100100
log.info("Setting frequency to " + frequency + " Hz.");
101101
passiveBuzzerOn(passBuzzDC, frequency);
102-
try {
103-
Thread.sleep(duration); // Play each frequency for the specified duration
104-
} catch (InterruptedException e) {
105-
Thread.currentThread().interrupt();
106-
}
102+
sleep(duration);
107103
passiveBuzzerOff();
108104
} else {
109105
log.error("Frequency is out of range. Please choose a value between 20 Hz and 20 kHz.");
@@ -119,12 +115,7 @@ public void setFrequencies(File frequenciesFile){
119115
*/
120116
public void passiveBuzzTone(){
121117
passiveBuzzerOn(passBuzzDC, passiveBuzzerFreq);
122-
123-
try{
124-
Thread.sleep(1000); // Buzz for 1 second
125-
} catch (InterruptedException e){
126-
Thread.currentThread().interrupt();
127-
}
118+
sleep(1000);
128119
passiveBuzzerOff();
129120
}
130121

@@ -137,11 +128,7 @@ public void toneIterator(){
137128
//passiveBuzzer.setFrequency(freq);
138129
log.info(String.valueOf(freq));
139130
passiveBuzzerOn(passBuzzDC, freq);
140-
try{
141-
Thread.sleep(1000); //Play each frequency for a full second
142-
} catch (InterruptedException e){
143-
Thread.currentThread().interrupt();
144-
}
131+
sleep(1000);
145132
passiveBuzzerOff();
146133
}
147134
}
@@ -164,20 +151,19 @@ public void piToneSequence(){
164151
int freq = frequencies[digit];
165152
passiveBuzzerOn(passBuzzDC, freq);
166153
//passiveBuzzer.setFrequency(freq); This is no longer needed.
167-
try{
168-
Thread.sleep(500); //Pause for beat
169-
} catch (InterruptedException e){
170-
Thread.currentThread().interrupt();
171-
}
154+
sleep(500);
172155
}
173156

174-
try{
175-
Thread.sleep(1000); //Pause for a second after song concludes
176-
} catch (InterruptedException e){
177-
Thread.currentThread().interrupt();
178-
}
157+
sleep(1000);
179158
passiveBuzzerOff();
180159
}
181160

161+
protected void sleep(long duration){
162+
try {
163+
Thread.sleep(duration); // Play each frequency for the specified duration
164+
} catch (InterruptedException e) {
165+
Thread.currentThread().interrupt();
166+
}
167+
}
182168

183169
}
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
package com.opensourcewithslu.outputdevices;
2+
3+
import com.pi4j.io.pwm.Pwm;
4+
import org.junit.jupiter.api.Test;
5+
import org.junit.jupiter.api.extension.ExtendWith;
6+
import org.junit.jupiter.api.io.TempDir;
7+
import org.mockito.InjectMocks;
8+
import org.mockito.Mock;
9+
import org.mockito.Spy;
10+
import org.mockito.junit.jupiter.MockitoExtension;
11+
12+
import java.io.IOException;
13+
import java.nio.file.Files;
14+
import java.nio.file.Path;
15+
16+
import static org.mockito.Mockito.*;
17+
18+
@ExtendWith(MockitoExtension.class)
19+
public class PassiveBuzzerHelperTest {
20+
21+
@TempDir
22+
Path tempDir;
23+
24+
@Mock
25+
private Pwm passiveBuzzer;
26+
27+
@InjectMocks
28+
@Spy
29+
private PassiveBuzzerHelper passiveBuzzerHelper;
30+
31+
32+
@Test
33+
void passiveBuzzerOn() {
34+
int passBuzzDC = 1;
35+
int passiveBuzzerFreq = 50;
36+
passiveBuzzerHelper.passiveBuzzerOn(passBuzzDC, passiveBuzzerFreq);
37+
verify(passiveBuzzer, times(1)).on(passBuzzDC, passiveBuzzerFreq);
38+
}
39+
40+
@Test
41+
void passiveBuzzerOff() {
42+
passiveBuzzerHelper.passiveBuzzerOff();
43+
verify(passiveBuzzer, times(1)).off();
44+
}
45+
46+
@Test
47+
void setFrequencies() throws IOException {
48+
Path path = tempDir.resolve("frequencies.txt");
49+
Files.writeString(path, "20,30,10000,20000,30000");
50+
51+
doNothing().when(passiveBuzzerHelper).sleep(anyLong());
52+
53+
passiveBuzzerHelper.setFrequencies(path.toFile());
54+
55+
verify(passiveBuzzer, times(1)).on(passiveBuzzerHelper.passBuzzDC, 20);
56+
verify(passiveBuzzer, times(1)).on(passiveBuzzerHelper.passBuzzDC, 30);
57+
verify(passiveBuzzer, times(1)).on(passiveBuzzerHelper.passBuzzDC, 10000);
58+
verify(passiveBuzzer, times(1)).on(passiveBuzzerHelper.passBuzzDC, 20000);
59+
verify(passiveBuzzer, never()).on(passiveBuzzerHelper.passBuzzDC, 30000);
60+
}
61+
62+
@Test
63+
void passiveBuzzTone() {
64+
doNothing().when(passiveBuzzerHelper).passiveBuzzerOn(anyInt(), anyInt());
65+
doNothing().when(passiveBuzzerHelper).sleep(anyLong());
66+
doNothing().when(passiveBuzzerHelper).passiveBuzzerOff();
67+
68+
passiveBuzzerHelper.passiveBuzzTone();
69+
70+
verify(passiveBuzzerHelper, times(1))
71+
.passiveBuzzerOn(passiveBuzzerHelper.passBuzzDC, passiveBuzzerHelper.passiveBuzzerFreq);
72+
verify(passiveBuzzerHelper, times(1)).passiveBuzzerOff();
73+
}
74+
75+
@Test
76+
void toneIterator() {
77+
doNothing().when(passiveBuzzerHelper).passiveBuzzerOn(anyInt(), anyInt());
78+
doNothing().when(passiveBuzzerHelper).sleep(anyLong());
79+
doNothing().when(passiveBuzzerHelper).passiveBuzzerOff();
80+
81+
passiveBuzzerHelper.toneIterator();
82+
83+
int [] frequencies = { 880, 1760, 3520,9000,15000};
84+
verify(passiveBuzzerHelper, atLeast(frequencies.length)).sleep(anyLong());
85+
for(int i : frequencies){
86+
verify(passiveBuzzerHelper).passiveBuzzerOn(passiveBuzzerHelper.passBuzzDC, i);
87+
}
88+
verify(passiveBuzzerHelper, times(frequencies.length)).passiveBuzzerOff();
89+
}
90+
91+
@Test
92+
void piToneSequence() {
93+
doNothing().when(passiveBuzzerHelper).passiveBuzzerOn(anyInt(), anyInt());
94+
doNothing().when(passiveBuzzerHelper).sleep(anyLong());
95+
doNothing().when(passiveBuzzerHelper).passiveBuzzerOff();
96+
97+
passiveBuzzerHelper.piToneSequence();
98+
99+
int [] digitsOfPi = {3, 1, 4, 1, 5, 9, 2, 6, 5};
100+
verify(passiveBuzzerHelper, times(digitsOfPi.length)).sleep(500);
101+
verify(passiveBuzzerHelper, times(1)).sleep(1000);
102+
verify(passiveBuzzerHelper, times(1)).passiveBuzzerOff();
103+
verify(passiveBuzzerHelper, times(digitsOfPi.length + 1))
104+
.passiveBuzzerOn(anyInt(), anyInt());
105+
}
106+
}

0 commit comments

Comments
 (0)