• 软件工程——数独 测试1


    命令解析模块测试

    测试代码

    #include "pch.h"
    #include "share.h"
    int **sudoku = nullptr;
    int num_of_sudoku = 0;//第几个数独表
    int upper_limit_of_sudoku = 0;
    HANDLE h_sudoku_txt = INVALID_HANDLE_VALUE;
    HANDLE h_sudoku_problem_txt = INVALID_HANDLE_VALUE;
    
    void closeTxt()
    {
        if (h_sudoku_txt != INVALID_HANDLE_VALUE)
            CloseHandle(h_sudoku_txt);
        if (h_sudoku_problem_txt != INVALID_HANDLE_VALUE)
            CloseHandle(h_sudoku_problem_txt);
        h_sudoku_problem_txt = INVALID_HANDLE_VALUE;
        h_sudoku_txt = INVALID_HANDLE_VALUE;
    }
    
    void mallocSudoku()
    {
        if (sudoku == nullptr)
        {
            sudoku = new int* [10];
            for (int i = 0; i < 10; i++)
            {
                sudoku[i] = new int[10];
            }
        }
    }
    
    void freeSudoku()
    {
        if (sudoku != nullptr)
        {
            for (int i = 0; i < 10; i++)
            {
                delete[] sudoku[i];
            }
            delete[] sudoku;
            sudoku = nullptr;
        }
    }
    
    namespace TestInterpretor
    {
        TEST(interpret_Test, MoreArguments)
        {
            wchar_t* argv[10];
            for (int i = 0; i < 4; i++)
                argv[i] = new wchar_t[100];
            lstrcpy(argv[0], L"sudoku.exe");
            lstrcpy(argv[1], L"-s");
            lstrcpy(argv[2], L"-c");
            lstrcpy(argv[3], L"200");
    
            EXPECT_EQ(interpret(4, argv), -1);
    
            lstrcpy(argv[4], L"-c");
            EXPECT_EQ(interpret(5, argv), -1);
        }
    
        TEST(interpret_Test, LessArguments)
        {
            wchar_t* argv[10];
            for (int i = 0; i < 4; i++)
                argv[i] = new wchar_t[100];
            lstrcpy(argv[0], L"sudoku.exe");
            lstrcpy(argv[1], L"-s");
    
            EXPECT_EQ(interpret(2, argv), -1);
        }
    
        TEST(interpret_Test, WrongArguments)
        {
            wchar_t* argv[10];
            for (int i = 0; i < 4; i++)
                argv[i] = new wchar_t[100];
            lstrcpy(argv[0], L"sudoku.exe");
            lstrcpy(argv[1], L"-t");
            lstrcpy(argv[2], L"200");
    
            EXPECT_EQ(interpret(3, argv), -2);
    
            lstrcpy(argv[0], L"sudoku.exe");
            lstrcpy(argv[1], L"");
            lstrcpy(argv[2], L"200");
    
            EXPECT_EQ(interpret(3, argv), -2);
        }
    
    
        TEST(createSudokuTxt_Test, CreateSudokuTxt2)
        {
            if (h_sudoku_txt != INVALID_HANDLE_VALUE)
            {
                CloseHandle(h_sudoku_txt);
                h_sudoku_txt = INVALID_HANDLE_VALUE;
            }
            EXPECT_EQ(createSudokuTxt(), 0);
            EXPECT_NE(h_sudoku_txt, INVALID_HANDLE_VALUE);
        }
    
        TEST(createSudokuTxt_Test, CreateSudokuTxt)
        {
            if (h_sudoku_txt != INVALID_HANDLE_VALUE)
            {
                CloseHandle(h_sudoku_txt);
                h_sudoku_txt = INVALID_HANDLE_VALUE;
            }
            EXPECT_EQ(createSudokuTxt(), 0);
            EXPECT_NE(h_sudoku_txt, INVALID_HANDLE_VALUE);
        }
    
    
        TEST(interpretMakingSudoku_Test, NumberArgvIncludeNonNumberChar)
        {
            wchar_t* argv[10];
            for (int i = 0; i < 4; i++)
                argv[i] = new wchar_t[100];
            lstrcpy(argv[0], L"sudoku.exe");
            lstrcpy(argv[1], L"-c");
            lstrcpy(argv[2], L"200.");
    
            EXPECT_EQ(interpret(3, argv), -2);
    
            lstrcpy(argv[2], L"2a0");
            EXPECT_EQ(interpret(3, argv), -2);
    
            lstrcpy(argv[2], L"2二0");
            EXPECT_EQ(interpret(3, argv), -2);
    
            lstrcpy(argv[2], L"-1");
            EXPECT_EQ(interpret(3, argv), -2);
    
            lstrcpy(argv[2], L"+2");
            EXPECT_EQ(interpret(3, argv), -2);
        }
    
    
        TEST(interpretMakingSudoku_Test, NumberLessThanOne)
        {
            wchar_t* argv[10];
            for (int i = 0; i < 4; i++)
                argv[i] = new wchar_t[100];
            lstrcpy(argv[0], L"sudoku.exe");
            lstrcpy(argv[1], L"-c");
            lstrcpy(argv[2], L"0");
    
            EXPECT_EQ(interpret(3, argv), -3);
        }
    
        TEST(interpretMakingSudoku_Test, NumberGreaterThan1E6)
        {
            wchar_t* argv[10];
            for (int i = 0; i < 4; i++)
                argv[i] = new wchar_t[100];
            lstrcpy(argv[0], L"sudoku.exe");
            lstrcpy(argv[1], L"-c");
            lstrcpy(argv[2], L"1000001");
    
            EXPECT_EQ(interpret(3, argv), -3);
    
            lstrcpy(argv[2], L"1000002");
            EXPECT_EQ(interpret(3, argv), -3);
            lstrcpy(argv[2], L"2000000");
            EXPECT_EQ(interpret(3, argv), -3);
        }
    
        //TEST(interpretMakingSudoku_Test, InterpretMakingSudoku)
        //{
        //    mallocSudoku();
        //    wchar_t* argv[10];
        //    for (int i = 0; i < 4; i++)
        //        argv[i] = new wchar_t[100];
        //    lstrcpy(argv[0], L"sudoku.exe");
        //    lstrcpy(argv[1], L"-c");
        //    lstrcpy(argv[2], L"1000");
    
        //    /*closeTxt();
        //    EXPECT_EQ(interpret(3, argv), 0);
        //    EXPECT_EQ(1000000, upper_limit_of_sudoku);
        //    EXPECT_NE(h_sudoku_txt, INVALID_HANDLE_VALUE);*/
    
    
        //    //closeTxt();
    
        //    //lstrcpy(argv[2], L"999");
        //    //EXPECT_EQ(interpret(3, argv), 0);
        //    //EXPECT_EQ(999999, upper_limit_of_sudoku);
        //    //EXPECT_NE(h_sudoku_txt, INVALID_HANDLE_VALUE);
    
        //    //closeTxt();
    
        //    //lstrcpy(argv[2], L"999");
        //    //EXPECT_EQ(interpret(3, argv), 0);
        //    //EXPECT_EQ(999998, upper_limit_of_sudoku);
        //    //EXPECT_NE(h_sudoku_txt, INVALID_HANDLE_VALUE);
    
        //    //closeTxt();
    
        //    //lstrcpy(argv[2], L"1");
        //    //EXPECT_EQ(interpret(3, argv), 0);
        //    //EXPECT_EQ(1, upper_limit_of_sudoku);
        //    //EXPECT_NE(h_sudoku_txt, INVALID_HANDLE_VALUE);
    
        //    //closeTxt();
    
        //    //lstrcpy(argv[2], L"2");
        //    //EXPECT_EQ(interpret(3, argv), 0);
        //    //EXPECT_EQ(2, upper_limit_of_sudoku);
        //    //EXPECT_NE(h_sudoku_txt, INVALID_HANDLE_VALUE);
    
    
        //    //closeTxt();
    
        //    //lstrcpy(argv[2], L"817");
        //    //EXPECT_EQ(interpret(3, argv), 0);
        //    //EXPECT_EQ(817, upper_limit_of_sudoku);
        //    //EXPECT_NE(h_sudoku_txt, INVALID_HANDLE_VALUE);
    
        //    freeSudoku();
        //}
    
    
        TEST(interpretSolvingSudoku_Test, NoSuchFile)
        {
            wchar_t* argv[10];
            for (int i = 0; i < 4; i++)
                argv[i] = new wchar_t[100];
            lstrcpy(argv[0], L"sudoku.exe");
            lstrcpy(argv[1], L"-s");
    
            closeTxt();
    
            EXPECT_EQ(interpretSolvingSudoku(argv[2]), -5);
            lstrcpy(argv[2], L"E:\");
            closeTxt();
            EXPECT_EQ(interpretSolvingSudoku(argv[2]), -5);
    
            lstrcpy(argv[2], L"E:\helloworld");
            closeTxt();
            EXPECT_EQ(interpretSolvingSudoku(argv[2]), -5);
    
            lstrcpy(argv[2], L"D:\");
            closeTxt();
            EXPECT_EQ(interpretSolvingSudoku(argv[2]), -5);
    
            lstrcpy(argv[2], L"D:\helloworld");
            closeTxt();
            EXPECT_EQ(interpretSolvingSudoku(argv[2]), -5);
        }
    
        TEST(interpretSolvingSudoku_Test, ExistSudokuProblemTxt)
        {
            wchar_t* argv[10];
            for (int i = 0; i < 4; i++)
                argv[i] = new wchar_t[100];
            lstrcpy(argv[0], L"sudoku.exe");
            lstrcpy(argv[1], L"-s");
            lstrcpy(argv[2], L"E:\requires.txt");
            closeTxt();
            EXPECT_EQ(interpretSolvingSudoku(argv[2]), 0);
            EXPECT_NE(h_sudoku_problem_txt, INVALID_HANDLE_VALUE);
    
            lstrcpy(argv[2], L"D:\requires.txt");
            closeTxt();
            EXPECT_EQ(interpretSolvingSudoku(argv[2]), 0);
            EXPECT_NE(h_sudoku_problem_txt, INVALID_HANDLE_VALUE);
    
    
            lstrcpy(argv[2], L"D:\迅雷下载\requires.txt");
            closeTxt();
            EXPECT_EQ(interpretSolvingSudoku(argv[2]), 0);
            EXPECT_NE(h_sudoku_problem_txt, INVALID_HANDLE_VALUE);
    
        }
    
        TEST(interpretTest, ExistSudokuProblemTxt)
        {
            wchar_t* argv[10];
            for (int i = 0; i < 4; i++)
                argv[i] = new wchar_t[100];
            lstrcpy(argv[0], L"sudoku.exe");
            lstrcpy(argv[1], L"-s");
            lstrcpy(argv[2], L"E:\requires.txt");
            closeTxt();
            EXPECT_EQ(interpret(3, argv), 0);
            EXPECT_NE(h_sudoku_problem_txt, INVALID_HANDLE_VALUE);
    
            lstrcpy(argv[2], L"D:\requires.txt");
            closeTxt();
            EXPECT_EQ(interpret(3, argv), 0);
    
            EXPECT_NE(h_sudoku_problem_txt, INVALID_HANDLE_VALUE);
    
    
            lstrcpy(argv[2], L"D:\迅雷下载\requires.txt");
            closeTxt();
            EXPECT_EQ(interpret(3, argv), 0);
    
            EXPECT_NE(h_sudoku_problem_txt, INVALID_HANDLE_VALUE);
        }
    }
    View Code

  • 相关阅读:
    vue--父组件向子组件传参--父组件定义v-bind:参数名--子组件接收props----子组件调用父组件的方法(子组件向父组件传参)父组件@事件名称--子组件接收this.$emit
    vue--组件切换--带动画效果---component
    js string类型转换成数组对象类型---eval
    Vue--创建组件-template---定义私有组件
    vue--自定义标签属性--用于多个事件共同引用一个组件--但是两个事件要实现的功能不同-避免冲突
    vue--组件动画效果--淡入淡出--位移
    vue---向后台添加数据--删除数据--事件方法传参---在单页面配置url请求地址--暂时没有用到webpack
    vscode安装Bootstrap插件--方便补全代码段
    vue-resource--ajax请求数据
    生命周期演示--从加载--渲染--销毁
  • 原文地址:https://www.cnblogs.com/harrypotterjackson/p/12201484.html
Copyright © 2020-2023  润新知