你会如何对do_int_to_string_conversion进行单元测试?
#include <string>
#include <iostream>
void do_int_to_string_conversion(int i, std::string& s) {
switch(i) {
case 1:
s="1";
break;
case 2:
s="2";
break;
default:
s ="Nix";
}
}
int main(int argc, char** argv){
std::string little_s;
do_int_to_string_conversion(1, little_s);
do_int_to_string_conversion(2, little_s);
do_int_to_string_conversion(3, little_s);
}
Run Code Online (Sandbox Code Playgroud) 这是我之前的问题的后续跟进.
考虑我用以下原型编写一个函数:
int a_function(Foo val);
Run Code Online (Sandbox Code Playgroud)
其中foo被认为是一个定义为unsigned int的类型.遗憾的是,由于缺乏文件,这是不可验证的.
所以,有人出现并使用a_function,但使用unsigned int作为参数调用它.
这个故事转了过来.Foo实际上是一个类,它可以在显式构造函数中将unsigned int作为unsigned int的单个参数.
对于编译器来说,通过对参数进行类型转换来呈现函数调用是一种标准且可靠的行为吗?即编译器应该识别不匹配并插入构造函数?或者我应该得到报告类型不匹配的编译时错误.
给定函数原型和类型定义:
int my_function(unsigned short x);
typedef unsigned short blatherskite;
Run Code Online (Sandbox Code Playgroud)
是否按标准定义了以下情况:
int main(int argc, char** argv) {
int result;
blatherskite b;
b=3;
result = my_function(b);
}
Run Code Online (Sandbox Code Playgroud)
我可以通过函数原型预测到类型强制吗?
我有以下两个类:
public class GenericNumberOperation {
public GenericNumberOperation() {}
public <T extends Number> T getSomeValue (boolean tf) {
T number;
if(tf) {
number = new Double(1.0);
}
else {
number = new Integer(11);
}
return (T) number;
}
}
Run Code Online (Sandbox Code Playgroud)
和:
public class GenericNumberTest {
public GenericNumberTest() {}
public static void main(String[] args) {
GenericNumberOperation gno = new GenericNumberOperation();
Double d = gno.getSomeValue(true);
Integer i = gno.getSomeValue(false);
}
}
Run Code Online (Sandbox Code Playgroud)
当我进行测试时,一切都很笨拙.如果我将类型参数更改为:
public <T> T getSomeValue(boolean tf)
Run Code Online (Sandbox Code Playgroud)
编译器抱怨,报告:
错误:不兼容的类型整数不能转换为T number = new Integer(11); 其中T是类型变量T …