我有一个类Foo存储指向回调的指针.可以使用方法调用回调InvokeCallback().
void* SomeCallback(void* a) {
return (void*)(*(int*)a + 10);
}
class Foo {
public:
typedef void* (*CallbackFunction)(void*);
SetCallback(CallbackFunction callback) {
this->callback = callback;
}
InvokeCallback() {
callback(20);
}
private:
CallbackFunction callback;
}
Run Code Online (Sandbox Code Playgroud)
如何测试(使用谷歌测试)SomeCallback()使用特定参数调用(在上述情况下为20)?
编辑:
我提出了一个非常难看的解决方案.测试通过,但最后出现了新的错误ERROR: 1 leaked mock object found at program exit.
class MockCallbackClass {
public:
MOCK_METHOD1(SomeCallback, void*(void*));
};
MockCallbackClass mock; // Nasty global variable
void* __SomeOtherCallback(void* a) {
return mock.SomeCallback(a);
}
TEST(Callback, MockCallback) {
Foo foo;
foo.SetCallback(__SomeOtherCallback);
EXPECT_CALL(mock, SomeCallback((void*)10)).WillOnce(testing::Return((void*)20));
}
Run Code Online (Sandbox Code Playgroud) 我正在使用PySerial串行端口读取,如下面的代码所示.
CheckReadUntil()读取我发送到串行端口的命令的输出,直到符号序列readUntil在串行输出中.
...
self.ser = serial.Serial(comDev, 115200, timeout=10)
...
#Function that continue to read from Serial port until 'readUntil'
#sequence of symbols appears
def CheckReadUntil(self, readUntil):
outputCharacters = []
while 1:
ch = self.ser.read()
outputCharacters += ch
if outputCharacters[-len(readUntil):]==readUntil:
break
outputLines = ''.join(outputCharacters)
return outputLines
Run Code Online (Sandbox Code Playgroud)
但是,如果没有序列readUntil(出于任何原因),我只是CheckReadUntil()永远陷入了这个功能.该设置timeout=10设置超时,所以我陷入了一个循环,每10秒迭代一次,什么也不做,只是等待.
怎么可能理解有一个超时事件所以我可以退出无限循环?输出长度可能不同.
我使用Python和'dateutil'包.我有两个日期'date1'和'date2'从一些字符串解析:
import dateutil.parser
date1 = dateutil.parser.parse(string1,fuzzy=True)
date2 = dateutil.parser.parse(string2,fuzzy=True)
Run Code Online (Sandbox Code Playgroud)
如何在'date1'和'date2'之间获得绝对(非负)时间差(以秒为单位)?只有一个数字.
使用谷歌测试,我想检查如果我调用另一个类方法,是否会调用某些类方法。
#include "gtest/gtest.h"
class Foo {
void DoWorkPrivate(int i) {}
public:
void DoWork(int i) {}
void Run() {
for (int i = 1; i <= 5; i++) {
DoWork(i);
DoWorkPrivate(i);
}
}
};
TEST(FooTest, Run) {
Foo foo;
foo.Run(); // Need to check that DoWork() and DoWorkPrivate() are invoked
}
Run Code Online (Sandbox Code Playgroud)
问题:
如何检查DoWork()和DoWorkPrivate()被使用某些参数(1、2、3、4、5)调用 5 次?
如何以优雅的方式转换字符串,如:
'test.test1.test2'
'test.test3.test4'
Run Code Online (Sandbox Code Playgroud)
成为这样的字符串:
'test.test1'
'test.test3'
Run Code Online (Sandbox Code Playgroud) 为什么下面的例子表现不一样?
示例1:foo似乎表现为特定于各种对象的类变量
class A:
foo = 1
a, b = A(), A()
a.foo = 5
print b.foo
----------------
Output: 1
Run Code Online (Sandbox Code Playgroud)
示例2:foo似乎表现得像所有对象的静态类变量一样.也许这种行为与作为指针的列表有关.
class A:
foo = []
a, b = A(), A()
a.foo.append(5)
print b.foo
----------------
Output: [5]
Run Code Online (Sandbox Code Playgroud)
示例3:不起作用
class A:
self.foo = []
a, b = A(), A()
a.foo.append(5)
print b.foo
----------------
Output: Error
Run Code Online (Sandbox Code Playgroud) 我正在使用tftpy在我的 Python 程序中创建 TFTP 服务器,它的工作原理很棒。但是,我需要其他类型的服务器:TFTP、FTP、SFTP。我可以使用什么包来支持所有这些?
我有一个关于过滤 Pandas 和 pyspark 数据帧时的时间差的问题:
import time
import numpy as np
import pandas as pd
from random import shuffle
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
df = pd.DataFrame(np.random.randint(1000000, size=400000).reshape(-1, 2))
list_filter = list(range(10000))
shuffle(list_filter)
# pandas is fast
t0 = time.time()
df_filtered = df[df[0].isin(list_filter)]
print(time.time() - t0)
# 0.0072
df_spark = spark.createDataFrame(df)
# pyspark is slow
t0 = time.time()
df_spark_filtered = df_spark[df_spark[0].isin(list_filter)]
print(time.time() - t0)
# 3.1232
Run Code Online (Sandbox Code Playgroud)
如果我将 的长度list_filter增加到 10000,那么执行时间是 0.01353 和 17.6768 秒。isin 的 Pandas 实现 …
如何从以下三个数字的字符串中提取三个CPU利用率值?
Total CPU Utilization 83.6% 95.4% 30.7%
Run Code Online (Sandbox Code Playgroud) 有以下简单的脚本:
def MyFunction(digit):
if digit < 4:
return digit
else:
return None
A = [1, 2, 3, 4, 5]
B = [MyFunction(x) for x in A]
print(B) # [1, 2, 3, None, None]
Run Code Online (Sandbox Code Playgroud)
题:
是否有可能以MyFunction()某种方式重写,所以B变得等于[1, 2, 3]没有None?请不要建议我if在列表理解中使用表达式,在列表理解之后处理B等.
python ×8
c++ ×2
googletest ×2
regex ×2
class ×1
date ×1
ftp ×1
googlemock ×1
oop ×1
pandas ×1
pyserial ×1
pyspark ×1
pyspark-sql ×1
python-2.7 ×1
self ×1
serial-port ×1
sftp ×1
static ×1
string ×1
tftp ×1
timeout ×1