Commit 037b5ca3 authored by Matthew Dawson's avatar Matthew Dawson
Browse files

Update the testEMLGenerator to work with the new MATLAB unit tests.

Bring back testEMLGenerator as EMLGeneratorTest, updating it for the new
test suite functionality.
parent a2fb06f0
Loading
Loading
Loading
Loading
+94 −0
Original line number Diff line number Diff line
classdef EMLGeneratorTest < matlab.unittest.TestCase

    methods (Test)
        function testparse_inputs(testcase)
            input_string = 'x';

            ri = EMLGenerator.parse_inputs(input_string);
            testcase.assertEqual(char(ri{1}(1)),'x');

            input_string = 'x:boolean';
            ri = EMLGenerator.parse_inputs(input_string);
            testcase.assertEqual(char(ri{1}(1)),'x');
            testcase.assertEqual(char(ri{1}(2)),'boolean');

            input_string = 'a:boolean,c,d:{x:real|x<2}';
            ri = EMLGenerator.parse_inputs(input_string);
            testcase.assertEqual(char(ri{1}(1)),'a');
            testcase.assertEqual(char(ri{1}(2)),'boolean');
            testcase.assertEqual(char(ri{2}(1)),'c');
            testcase.assertEqual(char(ri{3}(1)),'d');
            testcase.assertEqual(char(ri{3}(2)),'{x:real|x<2}');

            input_string = 'rewq$32:fwer';
            ri = EMLGenerator.parse_inputs(input_string);
            testcase.assertEqual(char(ri{1}(2)),'error');

            input_string = ',,,,';
            ri = EMLGenerator.parse_inputs(input_string);
            testcase.assertEqual(char(ri{1}(2)),'error');

        end

        function testpreamble(testcase)
            d = Data;
            d.init;
            d.function_name  = 'test';
            d.function_inputs = 'x';
            d.Grid1.cells(1).cond_text = 'x>1';
            d.Grid1.new_Cell;
            d.Grid1.cells(2).cond_text = 'x<=1';
            d.Grid0.Cells(1).result_text = '1';
            d.Grid0.Cells(2).result_text = '2';
            d.settings.except = 0;

            E = EMLGenerator(d);
            pre = E.generate_preamble;
            testcase.assertEqual(pre,sprintf('function [output] = test(x)\n%%%%#eml\noutput=1;\n'));

            d.function_name = 'test2';
            pre = E.generate_preamble;
            testcase.assertEqual(pre,sprintf('function [output] = test2(x)\n%%%%#eml\noutput=1;\n'));

            d.function_name = 'test3';
            E.set_datatype({'output', 'logical'});
            pre = E.generate_preamble;
            testcase.assertEqual(pre,sprintf('function [output] = test3(x)\n%%%%#eml\noutput=logical(1);\n'));


        end

        function testcode_gen(testcase)
            d = Data;
            d.init;
            d.function_name  = 'test';
            d.function_inputs = 'x';
            d.Grid1.cells(1).cond_text = 'x>1';
            d.Grid1.new_Cell;
            d.Grid1.cells(2).cond_text = 'x<=1';
            d.Grid0.Cells(1).result_text = '1';
            d.Grid0.Cells(2).result_text = '2';
            d.settings.except = 0;

            E = EMLGenerator(d);
            code = E.generate_eml_code;
            testcase.assertEqual(code,sprintf('function [output] = test(x)\n%%%%#eml\noutput=1;\nif(x>1)\n  output = 1;\nelseif(x<=1)\n  output = 2;\nend\n'));

            d.Grid1.cells(1).cond_text = 'x+1<2';
            d.Grid1.cells(2).cond_text = 'x-1>6';
            code = E.generate_eml_code;
            testcase.assertEqual(code,sprintf('function [output] = test(x)\n%%%%#eml\noutput=1;\nif(x+1<2)\n  output = 1;\nelseif(x-1>6)\n  output = 2;\nend\n'));


            d.Grid2.new_Cell;
            d.Grid2.cells(1).cond_text = 'x+1<2';
            d.Grid2.cells(2).cond_text = 'x-1>6';
            d.Grid1.cells(1).cond_text = 'y<1';
            d.Grid1.cells(2).cond_text = 'y>=1';
            d.Grid0.Cells(3).result_text = '3';
            d.Grid0.Cells(4).result_text = '4';
            code = E.generate_eml_code;
            testcase.assertEqual(code,sprintf('function [output] = test(x)\n%%%%#eml\noutput=1;\nif(x+1<2)\n  if(y<1)\n    output = 1;\n  elseif(y>=1)\n    output = 2;\n  end\nelseif(x-1>6)\n  if(y<1)\n    output = 3;\n  elseif(y>=1)\n    output = 4;\n  end\nend\n'));
        end
    end
end

Tests/testEMLGenerator.m

deleted100644 → 0
+0 −105
Original line number Diff line number Diff line

function test_suite = testEMLGenerator
initTestSuite;
end


function testparse_inputs
    input_string = 'x';
    ri = EMLGenerator.parse_inputs(input_string);
    
    assertEqual(char(ri{1}(1)),'x');
    input_string = 'x:boolean';
    ri = EMLGenerator.parse_inputs(input_string);
    assertEqual(char(ri{1}(1)),'x');
    assertEqual(char(ri{1}(2)),'boolean');
    input_string = 'a:boolean,c,d:{x:real|x<2}';
        ri = EMLGenerator.parse_inputs(input_string);
        assertEqual(char(ri{1}(1)),'a');
        assertEqual(char(ri{1}(2)),'boolean');
        assertEqual(char(ri{2}(1)),'c');
        assertEqual(char(ri{3}(1)),'d');
        assertEqual(char(ri{3}(2)),'{x:real|x<2}');
    
        input_string = 'rewq$32:fwer';
        ri = EMLGenerator.parse_inputs(input_string);
        assertEqual(char(ri{1}(2)),'error');

         input_string = ',,,,';
        ri = EMLGenerator.parse_inputs(input_string);
        assertEqual(char(ri{1}(2)),'error');

end

function testpreamble
    d = Data;
    d.init;
    d.function_name  = 'test';
    d.function_inputs = 'x';
    d.Grid1.cells(1).cond_text = 'x>1';
    d.Grid1.new_Cell;
    d.Grid1.cells(2).cond_text = 'x<=1';
    d.Grid0.Cells(1).result_text = '1';
    d.Grid0.Cells(2).result_text = '2';
    E = EMLGenerator(d);
    pre = E.generate_preamble;
    assertEqual(pre,sprintf('function output = test(x)\n%%%%#eml\noutput=(1);\n'));
    
    d.function_name = 'test2';
    pre = E.generate_preamble;
    assertEqual(pre,sprintf('function output = test2(x)\n%%%%#eml\noutput=(1);\n'));
    
     d.function_name = 'test3';
    E.set_datatype('logical');
        pre = E.generate_preamble;

    assertEqual(pre,sprintf('function output = test3(x)\n%%%%#eml\noutput=logical(1);\n'));
    
    
end

function testcode_gen
    d = Data;
    d.init;
    d.function_name  = 'test';
    d.function_inputs = 'x';
    d.Grid1.cells(1).cond_text = 'x>1';
    d.Grid1.new_Cell;
    d.Grid1.cells(2).cond_text = 'x<=1';
    d.Grid0.Cells(1).result_text = '1';
    d.Grid0.Cells(2).result_text = '2';
    E = EMLGenerator(d);
    code = E.generate_eml_code;
    assertEqual(code,sprintf('function output = test(x)\n%%%%#eml\noutput=(1);\nif(x>1)\n  output = (1);\nelseif(x<=1)\n  output = (2);\nend\n'));
    
    
    d.Grid1.cells(1).cond_text = 'x+1<2';
    d.Grid1.cells(2).cond_text = 'x-1>6';
        code = E.generate_eml_code;
    assertEqual(code,sprintf('function output = test(x)\n%%%%#eml\noutput=(1);\nif(x+1<2)\n  output = (1);\nelseif(x-1>6)\n  output = (2);\nend\n'));

    
    d.Grid2.new_Cell;
    d.Grid2.cells(1).cond_text = 'x+1<2';
    d.Grid2.cells(2).cond_text = 'x-1>6';
    d.Grid1.cells(1).cond_text = 'y<1';
    d.Grid1.cells(2).cond_text = 'y>=1';
    d.Grid0.Cells(3).result_text = '3';
    d.Grid0.Cells(4).result_text = '4';
    code = E.generate_eml_code;
    assertEqual(code,sprintf('function output = test(x)\n%%%%#eml\noutput=(1);\nif(x+1<2)\n  if(y<1)\n    output = (1);\n  elseif(y>=1)\n    output = (2);\n  end\nelseif(x-1>6)\n  if(y<1)\n    output = (3);\n  elseif(y>=1)\n    output = (4);\n  end\nend\n'));


%     d.function_name = 'test2';
%     pre = E.generate_preamble;
%     assertEqual(pre,sprintf('function output = test2(x)\n%%%%#eml\noutput=(1);\n'));
%     
%      d.function_name = 'test3';
%     E.set_datatype('logical');
%         pre = E.generate_preamble;
% 
%     assertEqual(pre,sprintf('function output = test3(x)\n%%%%#eml\noutput=logical(1);\n'));
    
    
end