changeset 5271:4e210d8025a4

[project @ 2005-04-06 22:56:55 by jwe]
author jwe
date Wed, 06 Apr 2005 22:56:55 +0000
parents a313e928afb1
children 49e60c5fa917
files test/octave.test/io/io.exp test/octave.test/io/load-save.m
diffstat 2 files changed, 188 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/test/octave.test/io/io.exp	Wed Apr 06 19:22:04 2005 +0000
+++ b/test/octave.test/io/io.exp	Wed Apr 06 22:56:55 2005 +0000
@@ -1,8 +1,6 @@
 ## The following functions need to have tests written for them:
 
 # disp
-# save
-# load
 # fputs
 # fgetl
 # fgets
@@ -10,6 +8,10 @@
 # fscanf
 # ferror
 
+set test load-save-1
+set prog_output "^ans = 1"
+do_test load-save.m
+
 set test puts-1
 set prog_output "foo\nans = 0"
 do_test puts-1.m
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/octave.test/io/load-save.m	Wed Apr 06 22:56:55 2005 +0000
@@ -0,0 +1,184 @@
+function [ret, files] = testls (input)
+
+  ## flag a1 global so as to test the storage of global flags
+  global a1;
+
+  ## Input or output, so as to be able to exchange between versions
+  if (nargin < 1)
+    input = 0;
+  endif
+
+  ## Force the random seed to be the same
+  rand("seed",1);
+
+  ## Setup some variable to be saved or compared to loaded variables
+
+  ## scalar
+  a1 = 1;
+  ## matrix
+  a2 = hilb(3);
+  ## complex scalar
+  a3 = 1 + 1i;
+  ## complex matrix
+  a4 = hilb(3) + 1i*hilb(3);
+  ## bool
+  a5 = (1 == 1);
+  ## bool matrix
+  a6 = ([ones(1,5), zeros(1,5)] == ones(1,10));
+  ## range
+  a7 = 1:10;
+  ## structure
+  a8.a = a1;
+  a8.b = a3;
+  ## cell array
+  a9{1} = a1;
+  a9{2} = a3; 
+  ## string
+  a10 = ["test"; "strings"];
+  ## int8 array
+  a11 = int8(floor(256*rand(2,2)));
+  ## int16 array
+  a12 = int16(floor(65536*rand(2,2)));
+  ## int32 array
+  a13 = int32(floor(1e6*rand(2,2)));
+  ## int64 array
+  a14 = int64(floor(10*rand(2,2)));
+  ## uint8 array
+  a15 = uint8(floor(256*rand(2,2)));
+  ## uint16 array
+  a16 = uint16(floor(65536*rand(2,2)));
+  ## int32 array
+  a17 = uint32(floor(1e6*rand(2,2)));
+  ## uint64 array
+  a18 = uint64(floor(10*rand(2,2)));
+  ## sparse
+  a19 = sprandn(100,100,0.01);
+  ## complex sparse
+  a20 = sprandn(100,100,0.01) + 1i * sprandn(100,100,0.01);
+
+  ret = 0;
+
+  if (! input)
+    save -z -text ascii.mat a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 
+    save -z -binary binary.mat a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 
+    save -z -mat mat5.mat a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 
+    save -v7 mat7.mat a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a18 a19 a20 
+  else
+    b1 = a1; b2 = a2; b3 = a3; b4 = a4; b5 = a5; b6 = a6; b7 = a7; b8 = a8;
+    b9 = a9; b10 = a10; b11 = a11; b12 = a12; b13 = a13; b14 = a14; b15 = a15;
+    b16 = a16; b17 = a17; b18 = a18; b19 = a19; b20 = a20;
+
+    files = {"ascii"; "binary"; "mat5"; "mat7"};
+    for i = 1:length(files)
+      clear a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 a14 a15 a16 a17 a19 a20;
+
+      file = files{i};
+      eval(["load -force " file ".mat;"]);
+
+      if (a1 != b1)
+	error(["failed: " file " scalar"])
+      endif
+      if (a2 != b2)
+	error(["failed: " file " matrix"]);
+      endif
+      if (a3 != b3)
+	error(["failed: " file " complex scalar"]);
+      endif
+      if (a4 != b4)
+	error(["failed: " file " complex matrix"]);
+      endif
+      if (a5 != b5)
+	error(["failed: " file " boolean"]);
+      endif
+      if (!strcmp (file,"mat5") && !strcmp(file,"mat7"))
+        if (a6 != b6)
+	  error(["failed: " file " boolean matrix"]);
+        endif
+      endif
+      if (a7 != b7)
+	error(["failed: " file " range"]);
+      endif
+
+      ## != not implemented for structs!!!!
+      if (!isstruct(a8) || (length(fieldnames(a8)) != 2) || !isfield(a8,"a")
+	  || !isfield(a8,"b") || (a8.a != b8.a) || (a8.b != b8.b))
+	error(["failed: " file " struct"]);
+      endif
+      
+      ## != not implemented for cell arrays!!!!
+      if (!iscell(a9) || (size(a9) != size(b9)) || (a9{1} != b9{1})
+	  || (a9{2} != b9{2}))
+	error(["failed: " file " cell"]);
+      endif
+      
+      if (a10 != b10)
+	error(["failed: " file " string"]);
+      endif
+
+      if (a11 != b11)
+	error(["failed: " file " int8"]);
+      endif
+
+      if (a12 != b12)
+	error(["failed: " file " int16"]);
+      endif
+
+      if (a13 != b13)
+	error(["failed: " file " int32"]);
+      endif
+
+      if (a14 != b14)
+	error(["failed: " file " int64"]);
+      endif
+
+      if (a15 != b15)
+	error(["failed: " file " uint8"]);
+      endif
+
+      if (a16 != b16)
+	error(["failed: " file " uint16"]);
+      endif
+
+      if (a17 != b17)
+	error(["failed: " file " uint32"]);
+      endif
+
+      if (a18 != b18)
+	error(["failed: " file " uint64"]);
+      endif
+
+      if (a19 != b19)
+	error(["failed: " file " sparse"]);
+      endif
+
+      if (a20 != b20)
+	error(["failed: " file " complex sparse"]);
+      endif
+
+      ## Test for global flags
+      if (!isglobal("a1") || isglobal("a2") || isglobal("a3") || 
+	  isglobal("a4") || isglobal("a5") || isglobal("a6") || 
+	  isglobal("a7") || isglobal("a8") || isglobal("a9") || 
+	  isglobal("a10") || isglobal("a11") || isglobal("a12") ||
+	  isglobal("a13") || isglobal("a14") || isglobal("a15") ||
+	  isglobal("a16") || isglobal("a17") || isglobal("a18") ||
+	  isglobal("a19") || isglobal("a20"))
+	error (["failed: " file " global test"]); 
+      endif
+    endfor
+  endif
+
+  ret = 1;
+
+endfunction
+
+
+
+[save_status, save_files] = testls (0);
+[load_status, load_files] = testls (1);
+
+for f = [save_files, load_files]
+  unlink (sprintf ("%s.mat", f));
+endfor
+
+save_status && load_status