From 1c3767bd8c6980c8611cc63b34a17c8babc22da7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?D=C3=B3ra=20Kocsis?= <dora@dynare.org> Date: Tue, 24 Mar 2020 17:38:46 +0100 Subject: [PATCH] modify template, add default_editor_base_url --- src/fetch_series.m | 4 +++- src/fetch_series_by_api_link.m | 6 +++++- test.m => template.m | 2 +- tests/run_all_tests_matlab.m | 36 ++++++++++++++++++++++++++++++++++ 4 files changed, 45 insertions(+), 3 deletions(-) rename test.m => template.m (94%) create mode 100644 tests/run_all_tests_matlab.m diff --git a/src/fetch_series.m b/src/fetch_series.m index 9133ba3..795d7df 100644 --- a/src/fetch_series.m +++ b/src/fetch_series.m @@ -36,6 +36,8 @@ function df = fetch_series(varargin) % default_api_base_url = 'https://api.db.nomics.world/v22/'; +default_editor_base_url = 'https://editor.nomics.world/api/v1/'; + p = inputParser; validStringInput = @(x) isstring(x) || ischar(x) || iscellstr(x); p.addParameter('provider_code', '', validStringInput); @@ -92,6 +94,6 @@ if ~isempty(p.Results.series_ids) end api_link = sprintf('%s?observations=1&series_ids=%s', series_base_url, strjoin(p.Results.series_ids,',')); end -df = fetch_series_by_api_link(api_link, p.Results.dbnomics_filters, p.Results.max_nb_series); +df = fetch_series_by_api_link(api_link, p.Results.dbnomics_filters, p.Results.max_nb_series, default_editor_base_url); end diff --git a/src/fetch_series_by_api_link.m b/src/fetch_series_by_api_link.m index cb3116e..0c94fb1 100644 --- a/src/fetch_series_by_api_link.m +++ b/src/fetch_series_by_api_link.m @@ -5,10 +5,14 @@ function df = fetch_series_by_api_link(api_link, varargin) % Example: % fetch_series_by_api_link("https://api.db.nomics.world/v22/series?provider_code=AMECO&dataset_code=ZUTN") +default_editor_base_url = 'https://editor.nomics.world/api/v1/'; + p = inputParser; +validStringInput = @(x) isstring(x) || ischar(x) || iscellstr(x); p.addRequired('api_link'); p.addOptional('dbnomics_filters', '',@ischar); p.addOptional('max_nb_series', NaN, @isnumeric); +p.addOptional('editor_api_base_url', default_editor_base_url, validStringInput); p.KeepUnmatched = false; p.parse(api_link, varargin{:}); @@ -68,7 +72,7 @@ else flat_series.labels{jj, 1} = dimension_label; dimension_value_code = regexprep(series_dims_by_dataset_code.(complete_dataset_code).(series_code).(dimension_codes{jj}),'[^a-zA-Z0-9]','_'); if isstrprop(dimension_value_code(1), 'digit') %MATLAB doesn't allow struct fieldnames to start with a digit - dimension_value_code = ['x' dimension_value_code]; + dimension_value_code = strcat('x', dimension_value_code); end try flat_series.labels{jj, 2} = dataset_dimensions.dimensions_values_labels.(dimension_codes{jj}).(dimension_value_code); diff --git a/test.m b/template.m similarity index 94% rename from test.m rename to template.m index 9efd717..da5faa3 100644 --- a/test.m +++ b/template.m @@ -27,5 +27,5 @@ df_multi_freq = fetch_series('series_ids', ["BEA/NIUnderlyingDetail-U001BC/S315- %% TO BE IMPLEMENTED % fetch one series and apply interpolation filter %NOT IMPLEMENTED df_filter = fetch_series('series_ids', "AMECO/ZUTN/EA19.1.0.0.0.ZUTN",... - 'dbnomics_filters', '{"code":["interpolate"], "parameters": {"frequency": ["monthly"], "method": ["spline"]}}'); + 'dbnomics_filters', '[{"code": "interpolate", "parameters": {"frequency": "monthly", "method": "spline"}}]'); diff --git a/tests/run_all_tests_matlab.m b/tests/run_all_tests_matlab.m new file mode 100644 index 0000000..c163862 --- /dev/null +++ b/tests/run_all_tests_matlab.m @@ -0,0 +1,36 @@ +function run_all_tests() +r = []; +r = [r; run_this_test('test_fetch_series_by_code')]; +r = [r; run_this_test('test_fetch_series_by_code_mask')]; +r = [r; run_this_test('test_fetch_series_by_code_mask_with_plus_in_dimension_code')]; +r = [r; run_this_test('test_fetch_series_by_id')]; +r = [r; run_this_test('test_fetch_series_by_ids_in_same_dataset')]; +r = [r; run_this_test('test_fetch_series_by_ids_in_different_datasets')]; +r = [r; run_this_test('test_fetch_series_by_dimension')]; +r = [r; run_this_test('test_fetch_series_of_dataset')]; +r = [r; run_this_test('test_fetch_series_by_api_link')]; +r = [r; run_this_test('test_fetch_series_with_na_values')]; +r = [r; run_this_test('test_fetch_series_with_max_nb_series')]; +print_results(r); + + +function o = run_this_test(file) +try + tstart = tic; + run([file '.m']); + elapsed = toc(tstart); + o = {file, true, elapsed}; +catch + o = {file, false, NaN}; +end + +function print_results(r) +message = sprintf('Testsuite results:\n'); +for i = 1:size(r, 1) + if r{i,2} + message = sprintf('%s\n%s\t\t PASS (%ss)', message, r{i,1}, num2str(r{i,3})); + else + message = sprintf('%s\n%s\t\t FAILED', message, r{i,1}); + end +end +disp(message) -- GitLab