| @@ -60,7 +60,7 @@ | |||
| <SubSystem>Windows</SubSystem> | |||
| <GenerateDebugInformation>true</GenerateDebugInformation> | |||
| <AdditionalLibraryDirectories>$(VCInstallDir)UnitTest\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | |||
| <AdditionalDependencies>..\jia\Debug\jia.obj;..\jian\Debug\jian.obj;..\chen\Debug\chen.obj;..\chu\Debug\chu.obj;%(AdditionalDependencies)</AdditionalDependencies> | |||
| <AdditionalDependencies>..\jia\Debug\jia.obj;..\jian\Debug\jian.obj;..\chen\Debug\chen.obj;..\chu\Debug\chu.obj;..\chu\Debug\tof.obj;%(AdditionalDependencies)</AdditionalDependencies> | |||
| </Link> | |||
| </ItemDefinitionGroup> | |||
| <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | |||
| @@ -5,6 +5,10 @@ | |||
| #include"../jian/jian.h" | |||
| #include"../chen/chen.h" | |||
| #include"../chu/chu.h" | |||
| #include"../chu/tof.h" | |||
| #include <limits> | |||
| //#include "iostream" | |||
| //using namespace std; | |||
| using namespace Microsoft::VisualStudio::CppUnitTestFramework; | |||
| @@ -18,25 +22,37 @@ namespace UnitTest1 | |||
| TEST_METHOD(TestMethod1) | |||
| { | |||
| // TODO: ÔÚ´ËÊäÈë²âÊÔ´úÂë | |||
| int SUM = GetPrivateProfileInt("Len", "sum", 0, "../ex1.ini"); | |||
| int SUM = GetPrivateProfileInt("Len", "sum", 0, "..//ex1.ini"); | |||
| { | |||
| for (int i = 1; i <= SUM; i++) | |||
| { | |||
| char SUMStr[8]; | |||
| char TestStr[8] = { "Test" }; | |||
| _itoa_s(i, SUMStr, 8); | |||
| char SUMStr[10]; | |||
| char TestStr[10] = { "Test" }; | |||
| _itoa_s(i, SUMStr, 10); | |||
| strcat_s(TestStr, SUMStr); | |||
| int num1 = GetPrivateProfileInt("TestStr", "number1", 0, "ex1.ini"); | |||
| int num2 = GetPrivateProfileInt("TestStr", "number2", 0, "ex1.ini"); | |||
| int output = GetPrivateProfileInt("TestStr", "output", 0, "ex1.ini"); | |||
| Assert::AreEqual(output, add(num1, num2)); | |||
| //string str(TestStr); | |||
| int num1 = GetPrivateProfileInt(TestStr, "number1", 0, "..//ex1.ini"); | |||
| int num2 = GetPrivateProfileInt(TestStr, "number2", 0, "..//ex1.ini"); | |||
| int c = 0; | |||
| bool ret1 = Add(num1, num2, &c); | |||
| if (ret1 == 1) | |||
| { | |||
| int output = GetPrivateProfileInt(TestStr, "output", 0, "..//ex1.ini"); | |||
| Assert::AreEqual(output, c); | |||
| } | |||
| else | |||
| { | |||
| LPTSTR Output = (LPTSTR)malloc(255); | |||
| GetPrivateProfileString(TestStr, "output", "", Output, 255, "..//ex1.ini"); | |||
| string s(Output); | |||
| Assert::AreEqual(tof(s), Add(num1, num2, &c)); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| TEST_METHOD(TestMethod2) | |||
| { | |||
| int SUB = GetPrivateProfileInt("Len", "sum", 0, "../ex2.ini"); | |||
| int SUB = GetPrivateProfileInt("Len", "sum", 0, "..//ex2.ini"); | |||
| { | |||
| for (int j = 1; j <= SUB; j++) | |||
| { | |||
| @@ -44,17 +60,29 @@ namespace UnitTest1 | |||
| char TestStr[8] = { "Test" }; | |||
| _itoa_s(j, SUBStr, 8); | |||
| strcat_s(TestStr, SUBStr); | |||
| int num1 = GetPrivateProfileInt("TestStr", "number1", 0, "ex2.ini"); | |||
| int num2 = GetPrivateProfileInt("TestStr", "number2", 0, "ex2.ini"); | |||
| int output = GetPrivateProfileInt("TestStr", "output", 0, "ex2.ini"); | |||
| Assert::AreEqual(output, sub(num1, num2)); | |||
| int num1 = GetPrivateProfileInt(TestStr, "number1", 0, "..//ex2.ini"); | |||
| int num2 = GetPrivateProfileInt(TestStr, "number2", 0, "..//ex2.ini"); | |||
| int d = 0; | |||
| bool ret2 = Sub(num1, num2, &d); | |||
| if (ret2 == 1) | |||
| { | |||
| int output = GetPrivateProfileInt(TestStr, "output", 0, "..//ex2.ini"); | |||
| Assert::AreEqual(output, d); | |||
| } | |||
| else | |||
| { | |||
| LPTSTR Output = (LPTSTR)malloc(255); | |||
| GetPrivateProfileString(TestStr, "output", "", Output, 255, "..//ex2.ini"); | |||
| string s(Output); | |||
| Assert::AreEqual(tof(s), Sub(num1, num2, &d)); | |||
| } | |||
| } | |||
| } | |||
| } | |||
| TEST_METHOD(TestMethod3) | |||
| { | |||
| int MUL = GetPrivateProfileInt("Len", "sum", 0, "../ex3.ini"); | |||
| int MUL = GetPrivateProfileInt("Len", "sum", 0, "..//ex3.ini"); | |||
| { | |||
| for (int i = 1; i <= MUL; i++) | |||
| { | |||
| @@ -62,17 +90,29 @@ namespace UnitTest1 | |||
| char TestStr[8] = { "Test" }; | |||
| _itoa_s(i, MULStr, 8); | |||
| strcat_s(TestStr, MULStr); | |||
| int num1 = GetPrivateProfileInt("TestStr", "number1", 0, "ex3.ini"); | |||
| int num2 = GetPrivateProfileInt("TestStr", "number2", 0, "ex3.ini"); | |||
| int output = GetPrivateProfileInt("TestStr", "output", 0, "ex3.ini"); | |||
| int num1 = GetPrivateProfileInt(TestStr, "number1", 0, "..//ex3.ini"); | |||
| int num2 = GetPrivateProfileInt(TestStr, "number2", 0, "..//ex3.ini"); | |||
| int e = 0; | |||
| bool ret3 = chen(num1, num2, &e); | |||
| if (ret3 == 1) | |||
| { | |||
| int output = GetPrivateProfileInt(TestStr, "output", 0, "..//ex3.ini"); | |||
| Assert::AreEqual(output, e); | |||
| } | |||
| else | |||
| { | |||
| LPTSTR Output = (LPTSTR)malloc(255); | |||
| GetPrivateProfileString(TestStr, "output", "", Output, 255, "..//ex3.ini"); | |||
| string s(Output); | |||
| Assert::AreEqual(tof(s), chen(num1, num2, &e)); | |||
| } | |||
| Assert::AreEqual(output, mul(num1, num2)); | |||
| } | |||
| } | |||
| } | |||
| TEST_METHOD(TestMethod4) | |||
| { | |||
| int DIV = GetPrivateProfileInt("Len", "sum", 0, "../ex4.ini"); | |||
| int DIV = GetPrivateProfileInt("Len", "sum", 0, "..//ex4.ini"); | |||
| { | |||
| for (int i = 1; i <= DIV; i++) | |||
| { | |||
| @@ -80,9 +120,9 @@ namespace UnitTest1 | |||
| char TestStr[8] = { "Test" }; | |||
| _itoa_s(i, DIVStr, 8); | |||
| strcat_s(TestStr, DIVStr); | |||
| int num1 = GetPrivateProfileInt("TestStr", "number1", 0, "ex4.ini"); | |||
| int num2 = GetPrivateProfileInt("TestStr", "number2", 0, "ex4.ini"); | |||
| int output = GetPrivateProfileInt("TestStr", "output", 0, "ex4.ini"); | |||
| int num1 = GetPrivateProfileInt(TestStr, "number1", 0, "..//ex4.ini"); | |||
| int num2 = GetPrivateProfileInt(TestStr, "number2", 0, "..//ex4.ini"); | |||
| int output = GetPrivateProfileInt(TestStr, "output", 0, "../ex4.ini"); | |||
| Assert::AreEqual(output, chu(num1, num2)); | |||
| } | |||
| @@ -1,4 +1,3 @@ | |||
| LIBRARY CHEN | |||
| LIBRARY chen | |||
| EXPORTS | |||
| mul | |||
| chen | |||
| @@ -1,8 +1,15 @@ | |||
| #include "chen.h" | |||
| #include <limits> | |||
| bool chen(int a, int b, int *e) | |||
| bool chen(int a, int b, int *e) | |||
| { | |||
| if( (a>0 && b>0 && a >( INT_MAX / b ))||( a<0 && b<0 && a < (INT_MAX / b)) ||( a>0 && b<0 && a < (INT_MIN / b)) ||( a<0 && b>0 && a >( INT_MIN /b) )) | |||
| if ((a>0 && b>0 && a >(INT_MAX / b)) || (a<0 && b<0 && a < (INT_MAX / b))) | |||
| { | |||
| return false; | |||
| } | |||
| else if ((a > 0 && b < 0 && b != -1 && (INT_MIN / a) > b || (a < 0 && b > 0 && a != -1 && (INT_MIN / a) < b))) | |||
| { | |||
| return false; | |||
| @@ -15,8 +22,4 @@ bool chen(int a, int b, int *e) | |||
| } | |||
| } | |||
| int mul(int a, int b) | |||
| { | |||
| return a * b; | |||
| } | |||
| @@ -1,8 +1,7 @@ | |||
| #ifndef MUL_H | |||
| #define MUL_H | |||
| #ifndef CHEN_H | |||
| #define CHEN_H | |||
| int mul(int a, int b); | |||
| bool chen(int a, int b, int *e); | |||
| bool chen(int a, int b, int *e); | |||
| #endif | |||
| @@ -20,7 +20,7 @@ | |||
| <ConfigurationType>Application</ConfigurationType> | |||
| <UseDebugLibraries>true</UseDebugLibraries> | |||
| <PlatformToolset>v120</PlatformToolset> | |||
| <CharacterSet>Unicode</CharacterSet> | |||
| <CharacterSet>MultiByte</CharacterSet> | |||
| </PropertyGroup> | |||
| <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | |||
| <ConfigurationType>Application</ConfigurationType> | |||
| @@ -81,9 +81,11 @@ | |||
| <ItemGroup> | |||
| <ClCompile Include="chu.cpp" /> | |||
| <ClCompile Include="main.cpp" /> | |||
| <ClCompile Include="tof.cpp" /> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ClInclude Include="chu.h" /> | |||
| <ClInclude Include="tof.h" /> | |||
| </ItemGroup> | |||
| <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | |||
| <ImportGroup Label="ExtensionTargets"> | |||
| @@ -21,10 +21,16 @@ | |||
| <ClCompile Include="chu.cpp"> | |||
| <Filter>源文件</Filter> | |||
| </ClCompile> | |||
| <ClCompile Include="tof.cpp"> | |||
| <Filter>源文件</Filter> | |||
| </ClCompile> | |||
| </ItemGroup> | |||
| <ItemGroup> | |||
| <ClInclude Include="chu.h"> | |||
| <Filter>头文件</Filter> | |||
| </ClInclude> | |||
| <ClInclude Include="tof.h"> | |||
| <Filter>头文件</Filter> | |||
| </ClInclude> | |||
| </ItemGroup> | |||
| </Project> | |||
| @@ -4,47 +4,79 @@ | |||
| #include "../jian/jian.h" | |||
| //#pragma comment(lib,"jian.lib") | |||
| #include "chu.h" | |||
| #include "Windows.h" | |||
| #include "windows.h" | |||
| #include "../chen/chen.h" | |||
| #include <iostream> | |||
| #include "tof.h" | |||
| using namespace std; | |||
| typedef int(*PMUL)(int a, int b); | |||
| typedef bool(*QCHEN)(int a, int b,int *e); | |||
| int main() | |||
| { | |||
| int a, b; | |||
| int c = 0; | |||
| int d = 0; | |||
| int e = 0; | |||
| /*char f = 0; | |||
| char *d = &f;*/ | |||
| printf("请输入两个整数\n"); | |||
| scanf("%d%d", &a, &b); | |||
| bool ret1 = Add(a, b,&c); | |||
| if ( ret1 == 0) | |||
| { | |||
| printf("两个整数相加结果溢出!\n"); | |||
| } | |||
| else | |||
| { | |||
| printf("ret1=%d a+b=%d\n",ret1,c); | |||
| printf("两个整数的相加结果是;%d\n", c); | |||
| } | |||
| //printf("两个整数的相减结果是;%d\n,%d", Sub(a, b, d)); | |||
| bool ret2 = Sub(a, b, &d); | |||
| printf("ret2=%d a-b=%d\n", ret2,d); | |||
| if (ret2 == 0) | |||
| { | |||
| printf("两个整数相减结果溢出!\n "); | |||
| } | |||
| else | |||
| { | |||
| printf("两个整数的相减结果是;%d\n", d); | |||
| } | |||
| HMODULE hDLL = LoadLibrary(L"../Debug/chen.dll"); | |||
| HMODULE hDLL =LoadLibrary ("../Debug/chen.dll"); | |||
| if (hDLL == NULL) | |||
| { | |||
| printf("加载DLL文件失败\n"); | |||
| return 0; | |||
| } | |||
| PMUL pMul = (PMUL)GetProcAddress(hDLL, "mul"); | |||
| // PMUL pMul = (PMUL)GetProcAddress(hDLL, "mul"); | |||
| QCHEN qChen = (QCHEN)GetProcAddress(hDLL, "chen"); | |||
| bool ret3 = chen(a, b, &e); | |||
| printf("ret3=%d a*b=%d\n", ret3, e); | |||
| printf("a/b=%d\n", chu(a, b)); | |||
| if (ret3 == 0) | |||
| { | |||
| printf("两个整数相乘结果溢出!\n "); | |||
| FreeLibrary(hDLL); | |||
| } | |||
| else | |||
| { | |||
| printf("两个整数的相乘结果是;%d\n", e); | |||
| } | |||
| printf("两个整数的相除结果是;%d\n", chu(a,b)); | |||
| system("pause"); | |||
| FreeLibrary(hDLL); | |||
| } | |||
| @@ -0,0 +1,18 @@ | |||
| #include "tof.h" | |||
| bool tof(string a) | |||
| { | |||
| string b = "false"; | |||
| if (a == b) | |||
| { | |||
| return false; | |||
| } | |||
| else | |||
| { | |||
| return true; | |||
| } | |||
| } | |||
| @@ -0,0 +1,8 @@ | |||
| #ifndef TOF_H | |||
| #define TOF_H | |||
| #include <iostream> | |||
| using namespace std; | |||
| bool tof(string a); | |||
| #endif | |||
| @@ -2,7 +2,7 @@ | |||
| sum=8 | |||
| [Test1] | |||
| number1=1 | |||
| number1 =1 | |||
| number2=2 | |||
| output=3 | |||
| @@ -22,9 +22,9 @@ number2=-2 | |||
| output=-3 | |||
| [Test5] | |||
| number1=1000 | |||
| number2=20000 | |||
| output=21000 | |||
| number1=2000000000 | |||
| number2=2000000000 | |||
| output=false | |||
| [Test6] | |||
| number1=-1000 | |||
| @@ -37,6 +37,6 @@ number2=-10 | |||
| output=2990 | |||
| [Test8] | |||
| number1=100000 | |||
| number2=5000000 | |||
| output=5100000 | |||
| number1=-1000000000 | |||
| number2=-2000000000 | |||
| output=false | |||
| @@ -22,9 +22,9 @@ number2=-11 | |||
| output=2 | |||
| [Test5] | |||
| number1=10000 | |||
| number2=2000 | |||
| output=8000 | |||
| number1=-1000000000 | |||
| number2=2000000000 | |||
| output=false | |||
| [Test6] | |||
| number1=-1 | |||
| @@ -37,6 +37,6 @@ number2=-10000 | |||
| output=10300 | |||
| [Test8] | |||
| number1=10000 | |||
| number2=500000 | |||
| output=-490000 | |||
| number1=2000000000 | |||
| number2=-2000000000 | |||
| output=false | |||
| @@ -12,31 +12,31 @@ number2=2 | |||
| output=-2 | |||
| [Test3] | |||
| number1=1 | |||
| number2=-5 | |||
| output=-5 | |||
| number1=1000000 | |||
| number2=50000 | |||
| output=false | |||
| [Test4] | |||
| number1=-9 | |||
| number2=-11 | |||
| output=99 | |||
| number1=-9000000 | |||
| number2=-11000 | |||
| output=false | |||
| [Test5] | |||
| number1=100 | |||
| number2=200 | |||
| output=20000 | |||
| number1=9 | |||
| number2=9 | |||
| output=81 | |||
| [Test6] | |||
| number1=-10000 | |||
| number2=200 | |||
| output=-2000000 | |||
| number1=-100000 | |||
| number2=200000 | |||
| output=false | |||
| [Test7] | |||
| number1=300 | |||
| number2=-1 | |||
| output=-300 | |||
| number1=1000000 | |||
| number2=-20000 | |||
| output=false | |||
| [Test8] | |||
| number1=-11 | |||
| number2=-11 | |||
| output=121 | |||
| number1=2 | |||
| number2=2 | |||
| output=4 | |||
| @@ -3,8 +3,8 @@ sum=8 | |||
| [Test1] | |||
| number1=100 | |||
| number2=0 | |||
| output=0 | |||
| number2=1 | |||
| output=100 | |||
| [Test2] | |||
| number1=-2 | |||
| @@ -29,12 +29,12 @@ output=-1 | |||
| [Test6] | |||
| number1=-10000 | |||
| number2=200 | |||
| output=-500 | |||
| output=-50 | |||
| [Test7] | |||
| number1=300 | |||
| number2=-1 | |||
| output=-300 | |||
| number2=0 | |||
| output=false | |||
| [Test8] | |||
| number1=0 | |||
| @@ -1,23 +1,19 @@ | |||
| #include "jia.h" | |||
| #include <limits> | |||
| bool Add(int a, int b, int *c) | |||
| bool Add(int a, int b, int *c) | |||
| { | |||
| if (a>0&&b>0&&a > INT_MAX - b ||a<0&&b<0&& a < INT_MIN - b) | |||
| { | |||
| if ((a > 0 && b > 0 && a > (INT_MAX - b)) || (a < 0 && b < 0 && a < (INT_MIN - b))) | |||
| { | |||
| return false; | |||
| } | |||
| else | |||
| { | |||
| *c = a + b; | |||
| return true; | |||
| } | |||
| } | |||
| int add(int a, int b) | |||
| { | |||
| return a + b; | |||
| } | |||
| @@ -1,6 +1,6 @@ | |||
| #ifndef ADD_H | |||
| #define ADD_H | |||
| bool Add(int a, int b, int *c); | |||
| int add(int a, int b); | |||
| bool Add(int a, int b,int *c); | |||
| //int add(int a,int b); | |||
| #endif | |||
| @@ -1,5 +1,23 @@ | |||
| #include "jian.h" | |||
| #include <limits> | |||
| //char Sub(int a, int b, char *d) | |||
| //{ | |||
| // if ((a>0 && b<0 && a >(INT_MAX + b)) || (a<0 && b>0 && a < (INT_MIN + b))) | |||
| // { | |||
| // char *c = { "overflow" }; | |||
| // *d = c[0]; | |||
| // return d[0]; | |||
| // } | |||
| // else | |||
| // { | |||
| // d[0] = (a - b) + '0'; | |||
| // return d[0]; | |||
| // | |||
| // } | |||
| // | |||
| //} | |||
| bool Sub(int a, int b, int *d) | |||
| { | |||
| if ((a>0 &&b<0 && a >( INT_MAX + b)) ||( a<0 && b>0 && a < (INT_MIN + b))) | |||
| @@ -15,7 +33,7 @@ bool Sub(int a, int b, int *d) | |||
| } | |||
| } | |||
| int sub(int a, int b) | |||
| { | |||
| return a - b; | |||
| } | |||
| //int sub(int a, int b) | |||
| //{ | |||
| // return a - b; | |||
| //} | |||
| @@ -5,7 +5,7 @@ | |||
| #else | |||
| #define DLLAPI _declspec(dllimport) | |||
| #endif | |||
| int DLLAPI sub(int a, int b); | |||
| //int DLLAPI sub(int a, int b); | |||
| bool DLLAPI Sub(int a, int b, int *d); | |||
| //char DLLAPI Sub(int a, int b, char *d); | |||
| #endif | |||