From 00d67110f2016f9a0689ce06ad895633532e467b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Charybdis=29?= <stephane.adjemian@univ-lemans.fr> Date: Mon, 9 Mar 2015 08:59:48 +0100 Subject: [PATCH] Removed data files for tests/initval_file. Generate the data instead with matlab's script ramst_initval_file_data.m. Note that the excel files are only produced and tested under Windows (xlswrite is not working on OS X, need to check for Linux). --- tests/Makefile.am | 34 +++++++++++++++--- tests/initval_file/ramst_initval_file.mod | 16 ++++++--- tests/initval_file/ramst_initval_file_data.m | 18 ++++++---- .../ramst_initval_file_data_col_vec_mat.mat | Bin 339 -> 0 bytes .../ramst_initval_file_data_row_vec_mat.mat | Bin 339 -> 0 bytes .../initval_file/ramst_initval_file_excel.xls | Bin 38400 -> 0 bytes 6 files changed, 53 insertions(+), 15 deletions(-) delete mode 100644 tests/initval_file/ramst_initval_file_data_col_vec_mat.mat delete mode 100644 tests/initval_file/ramst_initval_file_data_row_vec_mat.mat delete mode 100644 tests/initval_file/ramst_initval_file_excel.xls diff --git a/tests/Makefile.am b/tests/Makefile.am index 4679cb7754..184ddf691a 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -211,6 +211,8 @@ XFAIL_MODFILES = ramst_xfail.mod \ estim_param_in_shock_value.mod \ optimal_policy/Ramsey/ramsey_ex_wrong_ss_file.mod +MFILES = initval_file/ramst_initval_file_data.m + # Dependencies example1_use_dll.m.trs: example1.m.trs example1_use_dll.o.trs: example1.o.trs @@ -285,6 +287,11 @@ deterministic_simulations/rbc_det_exo_lag_2c.m.trs: deterministic_simulations/rb deterministic_simulations/rbc_det_exo_lag_2b.o.trs: deterministic_simulations/rbc_det_exo_lag_2a.o.trs deterministic_simulations/rbc_det_exo_lag_2c.o.trs: deterministic_simulations/rbc_det_exo_lag_2a.o.trs +initval_file/ramst_initval_file.m.trs: initval_file/ramst_initval_file_data.m.tls +initval_file/ramst_initval_file.o.trs: initval_file/ramst_initval_file_data.o.tls + + + # Matlab TRS Files M_TRS_FILES = $(patsubst %.mod, %.m.trs, $(MODFILES)) M_TRS_FILES += run_block_byte_tests_matlab.m.trs run_reporting_test_matlab.m.trs run_all_unitary_tests.m.trs @@ -295,12 +302,21 @@ O_TRS_FILES = $(patsubst %.mod, %.o.trs, $(MODFILES)) O_TRS_FILES += run_block_byte_tests_octave.o.trs run_reporting_test_octave.o.trs run_all_unitary_tests.o.trs O_XFAIL_TRS_FILES = $(patsubst %.mod, %.o.trs, $(XFAIL_MODFILES)) +# Matlab TLS Files +M_TLS_FILES = $(patsubst %.m, %.m.tls, $(MFILES)) + +# Octave TLS Files +O_TLS_FILES = $(patsubst %.m, %.o.tls, $(MFILES)) + + + EXTRA_DIST = \ read_trs_files.sh \ run_test_matlab.m \ run_test_octave.m \ $(MODFILES) \ $(XFAIL_MODFILES) \ + $(MFILES) \ run_block_byte_tests_matlab.m \ run_block_byte_tests_octave.m \ run_reporting_test_matlab.m \ @@ -321,10 +337,6 @@ EXTRA_DIST = \ fs2000_ssfile_aux.m \ printMakeCheckMatlabErrMsg.m \ printMakeCheckOctaveErrMsg.m \ - initval_file/ramst_initval_file_data.m \ - initval_file/ramst_initval_file_data_col_vec_mat.mat \ - initval_file/ramst_initval_file_data_row_vec_mat.mat \ - initval_file/ramst_initval_file_excel.xls \ test.m \ AIM/data_ca1.m \ AIM/fs2000_b1L1L_AIM_steadystate.m \ @@ -422,10 +434,22 @@ check-octave: $(O_XFAIL_TRS_FILES) $(O_TRS_FILES) DYNARE_VERSION="$(PACKAGE_VERSION)" TOP_TEST_DIR="$(PWD)" \ $(OCTAVE) --no-init-file --silent --no-history $< > $*.o.log 2>&1 +%.m.tls : %.m + TOP_TEST_DIR="$(PWD)" FILESTEM="$*" \ + $(MATLAB)/bin/matlab -nosplash -nodisplay -r run_m_script + touch $*.m.tls + +%.o.tls : %.m + TOP_TEST_DIR="$(PWD)" FILESTEM="$*" \ + $(OCTAVE) --no-init-file --silent --no-history run_m_script 2>&1 + + clean-local: rm -f $(M_TRS_FILES) \ + $(M_TLS_FILES) \ $(M_XFAIL_TRS_FILES) \ $(O_TRS_FILES) \ + $(O_TLS_FILES) \ $(O_XFAIL_TRS_FILES) \ $(patsubst %.trs, %.log, $(M_TRS_FILES)) \ $(patsubst %.trs, %.log, $(M_XFAIL_TRS_FILES)) \ @@ -492,3 +516,5 @@ clean-local: ms-sbvar/tmv_rr_tr rm -f estimation/test_matrix.mat + + rm -f initval_file/ramst_initval_file_data_col_vec_mat.mat initval_file/ramst_initval_file_data_row_vec_mat.mat initval_file/ramst_initval_file_excel.xls diff --git a/tests/initval_file/ramst_initval_file.mod b/tests/initval_file/ramst_initval_file.mod index c45327faf5..8a8e36edcd 100644 --- a/tests/initval_file/ramst_initval_file.mod +++ b/tests/initval_file/ramst_initval_file.mod @@ -22,26 +22,34 @@ k = ((delt+bet)/(1.0*aa*alph))^(1/(alph-1)); c = aa*k^alph-delt*k; end; +disp('Test #1') initval_file(filename = ramst_initval_file_data); steady; simul(periods=200); + +disp('Test #2') initval_file(filename = ramst_initval_file_data_row_vec_mat); steady; simul(periods=200); + +disp('Test #3') + initval_file(filename = ramst_initval_file_data_col_vec_mat); steady; simul(periods=200); -initval_file(filename = ramst_initval_file_excel); +if ispc() + disp('Test #4') -steady; - -simul(periods=200); + initval_file(filename = ramst_initval_file_excel); + steady; + simul(periods=200); +end diff --git a/tests/initval_file/ramst_initval_file_data.m b/tests/initval_file/ramst_initval_file_data.m index f7d82234c1..d5b750a310 100644 --- a/tests/initval_file/ramst_initval_file_data.m +++ b/tests/initval_file/ramst_initval_file_data.m @@ -1,10 +1,14 @@ x = vertcat([ 1; 1.2 ], repmat(1, 200, 1)); k = repmat(12.7551, 202, 1); c = repmat(1.53061, 202, 1); -% save ramst_initval_file_data_col_vec_mat -% xlswrite('ramst_initval_file_excel',[x k c],1,'A2') -% xlswrite('ramst_initval_file_excel',{'x' 'k' 'c'},1,'A1') -% c=c' -% k=k' -% x=x' -% save ramst_initval_file_data_row_vec_mat \ No newline at end of file +save('ramst_initval_file_data_col_vec_mat'); + +if ispc() + xlswrite('ramst_initval_file_excel',[x k c],1,'A2'); + xlswrite('ramst_initval_file_excel',{'x' 'k' 'c'},1,'A1'); +end + +c=c'; +k=k'; +x=x'; +save('ramst_initval_file_data_row_vec_mat'); \ No newline at end of file diff --git a/tests/initval_file/ramst_initval_file_data_col_vec_mat.mat b/tests/initval_file/ramst_initval_file_data_col_vec_mat.mat deleted file mode 100644 index 48c59f12f63781c4af061077c866309150505170..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 339 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2cQV4Jk_w+L}(NS<NN=+<DO;O0t zvr-7jC{^&wFH<lwS1_=&GBvX@G*vJ%Ff>sh5-`93qo*%F0|SFS0|P_FoX5!t2^k5= z2@FbXd~6)NOlt!EX)2_#B)he7DV*gz!f4>iBmbuN;DgP!J@#Jxmll7~u=VP{wB!Oq z(zZ`aLB`k-FeV3VjDu_A&CREtn`Bz`z|2@|qH4lm^nB4~VoXVanlf4b_g<eBe-n}1 NGUWop$wi0u007%QXY&96 diff --git a/tests/initval_file/ramst_initval_file_data_row_vec_mat.mat b/tests/initval_file/ramst_initval_file_data_row_vec_mat.mat deleted file mode 100644 index 1d975256775a3b202f95b7d80e37a253a86aaaf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 339 zcmeZu4DoSvQZUssQ1EpO(M`+DN!3vZ$Vn_o%P-2cQV4Jk_w+L}(NS<NN=+<DO;O0t zvr-7jC{^&wFH<lwS1_=&GBvX@v{W!MFf>sh5-`93qo*%F0|SFS0|P_FoX5!t2^k5= z2@FbXd~6)NOltz{lm+H9UGCu#b(kgG!JN<~VRu8i`CxjrMEw-GrS2~StER{;^<2mp zKk3s_kTG@yjJXLmrlE^zbNbZtnU_i=U}m^ydSx)^A6~SX7*kF{O;NM|Ry{M|_u)E( NTQnCk9;-XF2LS1RV^jbD diff --git a/tests/initval_file/ramst_initval_file_excel.xls b/tests/initval_file/ramst_initval_file_excel.xls deleted file mode 100644 index 1bea58b16c2cd91ac57cb687cbe520a33bcf06f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38400 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 Z4EYSnU^hUnj3v!I7G(Gzv~C7wKLC4jdiDSS -- GitLab