Picomite(VGA) V5.07.07 betas - bug fixes + focus on PIO


Author Message
thwill

Guru

Joined: 16/09/2019
Location: United Kingdom
Posts: 4370
Posted: 02:21pm 13 Jan 2023      

  matherp said  
  Quote  Could I push my luck and ask for:


Isn't that effectively there with MM.INFO(filesize fname$) which returns -2 if it is a directory


OK, you edited, and no, on some platforms that now throws an error.

This is the passing test code from when I checked about a week ago (but not with PicoMite):

Sub test_filesize_given_directory()
 If Mm.Device$ = "MMB4L" Then
   assert_int_equals(-2, Mm.Info(FileSize Mm.Info$(Directory)))
   assert_int_equals(-2, Mm.Info(FileSize Mm.Info$(Path)))
   assert_int_equals(-2, Mm.Info(FileSize "/"))
   assert_int_equals(-2, Mm.Info(FileSize "\"))
   assert_int_equals(-2, Mm.Info(FileSize "."))
   assert_int_equals(-2, Mm.Info(FileSize ".."))
   assert_int_equals(-2, Mm.Info(FileSize "A:/"))
   assert_int_equals(-2, Mm.Info(FileSize "A:\"))
   assert_int_equals(-2, Mm.Info(FileSize "C:/"))
   assert_int_equals(-2, Mm.Info(FileSize "C:\"))
   assert_int_equals(-2, Mm.Info(FileSize str.replace$(TMP$, "/", "\")))
   assert_int_equals(-2, Mm.Info(FileSize str.replace$(TMP$, "\", "/")))
   assert_int_equals(-2, Mm.Info(FileSize str.replace$("A:" + TMP$, "/", "\")))
   assert_int_equals(-2, Mm.Info(FileSize str.replace$("A:" + TMP$, "\", "/")))
   assert_int_equals(-2, Mm.Info(FileSize str.replace$("C:" + TMP$, "/", "\")))
   assert_int_equals(-2, Mm.Info(FileSize str.replace$("C:" + TMP$, "\", "/")))
 Else
   assert_filesize_fails(Mm.Info$(Directory))
   assert_filesize_fails(Mm.Info$(Path))
   assert_filesize_fails("/")
   assert_filesize_fails("\")
   assert_int_equals(Choice(Mm.Device$ = "MMBasic for Windows", -2, -1), Mm.Info(FileSize "."))
   assert_int_equals(Choice(Mm.Device$ = "MMBasic for Windows", -2, -1), Mm.Info(FileSize ".."))
   assert_filesize_fails("A:/")
   assert_filesize_fails("A:\")
   assert_filesize_fails("C:/")
   assert_filesize_fails("C:\")
   assert_int_equals(-2, Mm.Info(FileSize str.replace$(TMP$, "/", "\")))
   assert_int_equals(-2, Mm.Info(FileSize str.replace$(TMP$, "\", "/")))
 EndIf
End Sub

Sub assert_filesize_fails(f$)
 On Error Skip 1
 Local size% = Mm.Info(FileSize f$)
 assert_raw_error("Invalid file specification")
 On Error Clear
End Sub


Best wishes,

Tom