标签: assertions

MacOSX 10.8.2:如何清除不需要的电源管理断言?

有一些程序在MacOSX Mountain Lion下运行,现在(自安装10.8.2以来)导致设置不需要的电源管理断言.我正在寻找一种方法来清除这些断言.

这是一个例子:这些程序中的一个或多个导致以下电源管理断言设置在"powerd"内.请注意下面的"powerd"行...

% pmset -g assertions    
10/7/12 11:51:47 AM EDT  
Assertion status system-wide:
   PreventUserIdleDisplaySleep    1
   CPUBoundAssertion              0
   PreventSystemSleep             0
   PreventUserIdleSystemSleep     0
   ExternalMedia                  0
   UserIsActive                   0
   ApplePushServiceTask           0
   BackgroundTask                 0

Listed by owning process:
  pid 18(powerd): [0x00000005000001d7] 11:24:18 PreventUserIdleDisplaySleep named: "com.apple.powermanagement.delayDisplayOff" 
... etc. ...
Run Code Online (Sandbox Code Playgroud)

这些程序退出并将这种电源管理断言留在"powerd"中,并且它永远保持活跃状态​​.这可以防止"显示睡眠"和屏幕保护程序被调用.

在这种情况下我知道的唯一选项(除了重新启动)是在"powerd"进程上执行"kill -HUP".这会导致守护程序退出并重新启动而不会出现错误的断言.

有没有人知道10.8.2下的方法让我在"powerd"中清除"PreventUserIdleDisplaySleep"断言,而不强制重启该守护进程?如果需要,我很高兴通过Cocoa,Carbon或AppleScript程序来完成这项工作.

我知道IOPMLib,但该库中的例程似乎只能清除在同一进程中创建的幂断言.我需要一种方法来告诉外部和已经运行的"powerd"进程清除管理的"PreventUserIdleDisplaySleep"断言.有没有人知道在运行的"powerd"实例中外部设置和清除电源管理断言的API?也许是通过某种通知...... ???

macos assertions power-management osx-mountain-lion

14
推荐指数
1
解决办法
1万
查看次数

在java中使用AssertionError和断言

我以标准的方式在Java中使用断言,在我的IDE中打开它们.所以他们不是生产发布的一部分.最近我一直在看代码示例,throw new AssertionError()我开始考虑AssertionError应该使用的情况而不是断言.

我的猜测主要区别在于断言的可选性,因此它们不会降低生产性能,因此它们可以在代码中经常出现,但修复用户报告的难以再现的错误则更难.

因为AssertionError,恰恰相反.

我还发现AssertionError在执行不应该得到的代码中更实用,而不是使用assert false //We should not be here.特别是如果需要返回值.例如:

int getFoo(AnEnum a){
    if (a == AnEnum.ONE)
       return bar();
    else if (a == AnEnum.TWO)
       return SOME_VALUE;
    //else
    assert false; //throw new AssertionError();
    return -1; //not necessary when usin AssertionError
}
Run Code Online (Sandbox Code Playgroud)
  • 我的推理是否正确?
  • 这两种方法的其他差异/用例/最佳实践/限制是什么?
  • 关于提供描述AssertionError- 应该提供还是仅仅是Error(和断言类型)的事实足以或多或少地确定在发现错误的情况下将提供堆栈跟踪?

java exception-handling assertions

13
推荐指数
2
解决办法
4741
查看次数

Python:断言字符串是否与格式匹配

我使用 Django Rest Framework APIClient 对 Django API 进行了一些单元测试。API 的不同端点返回自定义错误消息,其中一些带有格式化字符串,例如:'Geometry type "{}" is not supported'

我断言来自客户端响应和错误消息键的状态代码,但在某些情况下,我想弄清楚返回了什么错误消息,以确保没有其他原因导致该错误。

所以我也想根据原始的未格式化字符串验证返回的错误消息。例如,如果我收到类似 的错误消息'Geometry type "Point" is not supported',我想检查它是否与原始未格式化的消息匹配,即'Geometry type "{}" is not supported'

目前我想到的解决方案:

  • 首先:用正则表达式模式替换原始字符串中的括号,然后查看它是否与响应匹配。

  • 第二:(很酷的想法,但在某些情况下可能会失败)使用difflib.SequenceMatcher并测试相似度是否大于例如 90%。

更新

这是一个例子:

有许多dict错误消息,每个错误都会从中选择相关消息,根据需要添加格式参数,然后引发错误:

ERROR_MESSAGES = {
    'ERROR_1': 'Error message 1: {}. Do something about it',
    'ERROR_2': 'Something went wrong',
    'ERROR_3': 'Check you args: {}. Here is an example: {}'
}
Run Code Online (Sandbox Code Playgroud)

现在,我的 DRF 序列化器在处理请求期间发生错误,并引发错误:

try:
    some_validation()
except SomeError as …
Run Code Online (Sandbox Code Playgroud)

python string django unit-testing assertions

13
推荐指数
2
解决办法
3万
查看次数

你是如何扩展你的Assert类的

我喜欢扩展我的Assert.AreEqual到许多不同的类,当然已知的是CollectionAssert,但我可以想到更多如:ImageAssert,XmlAssert等.

您是否创建了自己的Assert类?你想创造什么样的新品?

c# tdd unit-testing assertions

12
推荐指数
2
解决办法
6734
查看次数

在NUnit中断言集合与预期集合的顺序相同

我知道如何检查某个属性是否订购了一个集合:

Assert.That(actual, Is.Ordered.By("Foo"));
Run Code Online (Sandbox Code Playgroud)

如何断言实际包含此特定顺序的元素(1,2,5,3,4)(无需编写自定义比较器).

collections nunit assertions

12
推荐指数
1
解决办法
4028
查看次数

PHPUnit断言真一(1)

我正在看PHPUnit,以下让我感到疑惑.PHPUnit是否处理int.1和0是否为布尔值?在我目前的测试中,它没有.

例: $this->assertTrue(preg_match('/asdf/', 'asdf'));

在我的测试中,这失败了,因为preg_match()返回int 1或0并且只有bool false才会出现错误.

显然,我接受以下工作,因为比较总是返回bool. $this->assertTrue(preg_match('/asdf/', 'asdf') === 1);

我是否在preg_match中遗漏了一些东西,或者我的断言使它变得不那么严格了?

编辑:assertTrue是否需要匹配类型?有没有办法让断言不那么严格?

php phpunit assertions

12
推荐指数
2
解决办法
1万
查看次数

如何在specs2中断言对象的类型

在specs2测试中,如何验证函数返回值的类型?

说,功能:

trait P
trait C1 extends P
trait C2 extends P

def test(n:Int): P = if(n%2==0) new C1 else new C2
Run Code Online (Sandbox Code Playgroud)

测试:

"test" should {
   "return C1 when n is even" in {
       val result = test(2)
       // how to assert
       // 'result' should have type of C1?
   }
}
Run Code Online (Sandbox Code Playgroud)

我想知道如何断言价值的类型result

types scala assertions specs2

12
推荐指数
1
解决办法
3108
查看次数

为什么Q_ASSERT而不是断言

在Qt中有一个Q_ASSERT宏.什么是使用这种替代的优势断言<cassert>

qt assert assertions

12
推荐指数
2
解决办法
1万
查看次数

我可以编写一个抛出异常而不是返回布尔值的类型保护吗?

我有一个在多个函数中使用相同类型保护的类;像这样:

function validData(d: Data | null): d is Data {
    return d !== null;
}

class C {
    data: Data | null;

    public doA() {
        if (!validData(this.data))
            throw new Error("Invalid data");
        /* … */
    }

    public doB() {
        if (!validData(this.data))
            throw new Error("Invalid data");
        /* … */
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以重构此代码以将错误移到类型保护中吗?像这样的东西:

function assertData(d: Data | null): ??? {
    if (d === null)
        throw new Error("Invalid data");
}
Run Code Online (Sandbox Code Playgroud)

...我可以这样使用:

class C {
    data: Data | null;

    public doA() {
        assertData(this.data);
        /* … …
Run Code Online (Sandbox Code Playgroud)

nullable assertions typescript

12
推荐指数
1
解决办法
1940
查看次数

UICollectionView:断言失败 - [UICollectionView _endItemAnimations]

我在我的应用中收到此错误:

***断言失败-[UICollectionView _endItemAnimations],/ SourceCache/UIKit/UIKit-2372/UICollectionView.m:2801

它出现在我的-controllerDidChangeContent:方法中:

[self.collectionView performBatchUpdates:^{...}];
Run Code Online (Sandbox Code Playgroud)

有谁知道是什么原因造成的?我的代码基于https://gist.github.com/4440c1cba83318e276bb,我很茫然.

谢谢!

assertions ipad ios ios6 uicollectionview

11
推荐指数
2
解决办法
7065
查看次数