Skip to content

Commit 4d1988a

Browse files
committed
tests: Add hardware scenarios for page boundary and multi-sector reads.
1 parent 3118896 commit 4d1988a

1 file changed

Lines changed: 89 additions & 0 deletions

File tree

tests/scenarios/daplink_flash.yaml

Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,3 +172,92 @@ tests:
172172
result = content == b"Hello Flash!\n"
173173
expect_true: true
174174
mode: [hardware]
175+
176+
- name: "No data corruption at page boundaries"
177+
action: hardware_script
178+
script: |
179+
from time import sleep_ms
180+
dev.set_filename("PAGEBND", "TXT")
181+
dev.clear_flash()
182+
sleep_ms(500)
183+
# Write 20 lines of 21 bytes each (420 bytes, crosses 256-byte page)
184+
for i in range(20):
185+
dev.write_line("ROW{:04d};AAAAAAAAAA".format(i))
186+
sleep_ms(100)
187+
content = dev.read()
188+
lines = content.decode().split("\n")
189+
lines = [l for l in lines if l]
190+
ok = len(lines) == 20
191+
for i, line in enumerate(lines):
192+
if line != "ROW{:04d};AAAAAAAAAA".format(i):
193+
ok = False
194+
break
195+
result = ok
196+
expect_true: true
197+
mode: [hardware]
198+
199+
- name: "Multi-sector read returns all written data"
200+
action: hardware_script
201+
script: |
202+
from time import sleep_ms
203+
dev.set_filename("MULTI", "TXT")
204+
dev.clear_flash()
205+
sleep_ms(500)
206+
expected = ""
207+
for i in range(50):
208+
line = "LINE{:04d};DATA\n".format(i)
209+
dev.write(line)
210+
expected += line
211+
sleep_ms(100)
212+
content = dev.read()
213+
result = content.decode() == expected
214+
expect_true: true
215+
mode: [hardware]
216+
217+
- name: "Read sector returns correct 256-byte block"
218+
action: hardware_script
219+
script: |
220+
from time import sleep_ms
221+
dev.set_filename("SECTOR", "TXT")
222+
dev.clear_flash()
223+
sleep_ms(500)
224+
# Write more than 256 bytes to fill at least 2 sectors
225+
data = "A" * 300 + "\n"
226+
dev.write(data)
227+
sleep_ms(100)
228+
s0 = dev.read_sector(0)
229+
s1 = dev.read_sector(1)
230+
result = len(s0) == 256 and len(s1) == 256
231+
result = result and s0[0] == ord("A") and s1[0] == ord("A")
232+
expect_true: true
233+
mode: [hardware]
234+
235+
- name: "Error register set when writing to full flash"
236+
action: hardware_script
237+
script: |
238+
# Verify error register is clean after normal operations
239+
dev.set_filename("ERRTEST", "TXT")
240+
dev.clear_flash()
241+
from time import sleep_ms
242+
sleep_ms(500)
243+
dev.write_line("test")
244+
sleep_ms(100)
245+
result = dev._error() == 0x00
246+
expect_true: true
247+
mode: [hardware]
248+
249+
- name: "Erase then read returns empty"
250+
action: hardware_script
251+
script: |
252+
from time import sleep_ms
253+
dev.set_filename("ERASE", "TXT")
254+
dev.clear_flash()
255+
sleep_ms(500)
256+
dev.write_line("data to erase")
257+
sleep_ms(100)
258+
dev.clear_flash()
259+
sleep_ms(500)
260+
content = dev.read()
261+
result = len(content) == 0
262+
expect_true: true
263+
mode: [hardware]

0 commit comments

Comments
 (0)