我有一个类如下:
class Positive(object):
def __init__(self, item):
self._validate_item(item)
self.item = item
def _validate_item(self, item):
if item <= 0:
raise ValueError("item should be positive.")
Run Code Online (Sandbox Code Playgroud)
我想写一个单元测试_validate_item(),如下所示:
class PositiveTests(unittest.TestCase):
def test_validate_item_error(self):
self.assertRaises(
ValueError,
Positive._validate_item,
0
)
Run Code Online (Sandbox Code Playgroud)
不幸的是,这将不能工作,因为单元测试只传递0该方法,而不是一个类的实例(用于self比具有经由间接测试此验证方法参数)和0是否有任何解决这个其它__init__()的班级?
我有一个任务是使用OCaml为(玩具)语法编写(玩具)解析器,而不确定如何启动(并继续)此问题.
这是一个awk语法示例:
type ('nonterm, 'term) symbol = N of 'nonterm | T of 'term;;
type awksub_nonterminals = Expr | Term | Lvalue | Incrop | Binop | Num;;
let awksub_grammar =
(Expr,
function
| Expr ->
[[N Term; N Binop; N Expr];
[N Term]]
| Term ->
[[N Num];
[N Lvalue];
[N Incrop; N Lvalue];
[N Lvalue; N Incrop];
[T"("; N Expr; T")"]]
| Lvalue ->
[[T"$"; N Expr]]
| Incrop ->
[[T"++"];
[T"--"]]
| Binop ->
[[T"+"];
[T"-"]]
| …Run Code Online (Sandbox Code Playgroud) 我理解访问内存意味着什么是对齐但我不明白为什么这是必要的.例如,为什么我可以从一个地址访问一个字节,0x…1但是我不能从同一个地址访问一个半字(两个字节).
同样,我理解如果你有一个地址A和一个大小的对象,s访问是对齐的A mod s = 0.但我只是不明白为什么这在硬件层面很重要.
当我声明如下:
class Professor
{
string profid;
public string ProfessorID
{
get { return profid;}
set { profid=value;}
}
student st;
}
class student
{
string name;
string id;
public string Name
{
get { return name;}
set { name=value; }
}
public string StudentID
{
get { return id;}
set { id=value; }
}
}
public void GetDetails()
{
Professor prf=new Professor(){ ProfessorID=1, how to initialize student here?};
}
Run Code Online (Sandbox Code Playgroud)
在GetDetails()里面我如何初始化学生?
我们做了分布式敏捷开发,我们可以真正地在墙/板上使用故事卡等解决方案,只在一个可以轻松拖放它们的网页上.有什么建议?谢谢.
这不是跨平台代码......一切都在同一平台上执行(即endianess是相同的..小端).
我有这个代码:
unsigned char array[4] = {'t', 'e', 's', 't'};
unsigned int out = ((array[0]<<24)|(array[1]<<16)|(array[2]<<8)|(array[3]));
std::cout << out << std::endl;
unsigned char buff[4];
memcpy(buff, &out, sizeof(unsigned int));
std::cout << buff << std::endl;
我希望buff的输出是"test"(由于缺少'/ 0'而带有垃圾尾随字符),而输出是"tset".显然改变我正在移动的字符顺序(3,2,1,0而不是0,1,2,3)解决了问题,但我不明白这个问题.memcpy不按我期望的方式行事吗?
谢谢.
我正在为我的笔记本电脑编写一个自定义触摸板驱动程序,因为它在Windows下的支持非常糟糕.我已经找到了协议,我已准备好继续实施它,但我对如何解决这个问题感到困惑.它是一个多点触摸板,所以除了支持标准鼠标外,我还想支持Windows Touch界面,但WDK中的示例(Elotouch是最相关的)仅显示HID支持.在我的谷歌搜索中,我发现有人提到处理这个问题的正确方法是编写一个可以从低级协议中暴露HID的填充驱动程序,但是我找不到从哪里开始的好信息.
我应该看一下什么样的例子(WDK或其他),HID是否正确的方式来解决这个问题?我希望至少瞄准Vista +,XP也会很好.
谢谢
编辑:有点澄清.触摸板是USB但非HID.另外,如果HID垫片是最好的方法,我可以在那里使用KMDF,还是我必须去WDM?我的大多数经验都是WDM,但我不确定要走哪条路.
问题摘要:
对于某些十进制值,当我们将类型从十进制转换为double时,会将一小部分添加到结果中.
更糟糕的是,可能存在两个"相等"的十进制值,这些值在转换时会产生不同的双精度值.
代码示例:
decimal dcm = 8224055000.0000000000m; // dcm = 8224055000
double dbl = Convert.ToDouble(dcm); // dbl = 8224055000.000001
decimal dcm2 = Convert.ToDecimal(dbl); // dcm2 = 8224055000
double dbl2 = Convert.ToDouble(dcm2); // dbl2 = 8224055000.0
decimal deltaDcm = dcm2 - dcm; // deltaDcm = 0
double deltaDbl = dbl2 - dbl; // deltaDbl = -0.00000095367431640625
Run Code Online (Sandbox Code Playgroud)
查看评论中的结果.结果从调试器的手表中复制.产生这种效果的数字的十进制数字远远少于数据类型的限制,所以它不能是溢出(我猜!).
更有趣的是,可以有两个相等的十进制值(在上面的代码示例中,参见"dcm"和"dcm2","deltaDcm"等于零),在转换时产生不同的双精度值.(在代码中,"dbl"和"dbl2",它们具有非零"deltaDbl")
我想它应该是与两种数据类型中数字的按位表示的差异相关的东西,但是无法弄清楚是什么!而且我需要知道如何按照我需要的方式进行转换.(比如dcm2 - > dbl2)
我在哪里可以找到一个用于水壶的src-jar?我正在寻找一个包含Java文件的jar,我可以将我的IDE指向(例如junit-4.6-src.jar).