小编Kai*_*Kid的帖子

如何用FluentAssertions替换Assert.Fail()

目前,我们正在将使用一些代码Assert.IsTrue()Assert.AreEqual()Assert.IsNotNull(),等的基本单元测试断言库C#

我们要使用FluentAssertions,例如 value.Should().BeNull().

Assert.Fail()在某些地方使用了一些测试。我想用什么来有效地替换那些,因为我们要删除每个“ Assert。*”,而我在FluentAssertions中找不到等效的东西?

这是一个例子

[TestMethod, TestCategory("ImportantTest")]
public void MethodToTest_Circumstances_ExpectedResult()
{
    // Arrange
    var variable1 = new Type1() { Value = "hello" };
    var variable2 = new Type2() { Name = "Bob" };

    // Act
    try
    {
        MethodToTest(variable1, variable2);
        // This method should have thrown an exception
        Assert.Fail();
    }
    catch (Exception ex)
    {
        ex.Should().BeOfType<DataException>();
        ex.Message.Should().Be(Constants.DataMessageForMethod);
    }

    // Assert
    // test that variable1 was changed by the method
    variable1.Should().NotBeNull();
    variable1.Value.Should().Be("Hello!");
    // test …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing assertions fluent-assertions

7
推荐指数
1
解决办法
2626
查看次数

Multidimensional Knapsack with minimum and maximum

I have a problem which is similar to the Knapsack problem, more specifically the multidimensional variation.

I have a bunch of objects which all have a cost, a value, and a category. I need to the Knapsack optimisation for value under a maximum cost, but also have a specific number of objects in each category.

I have successfully implemented in C++ the original knapsack algorithm, without paying attention to the categories.

When I tried to add the categories, I …

c++ arrays algorithm knapsack-problem multidimensional-array

6
推荐指数
1
解决办法
2557
查看次数

将变换转换为 RectTransform

在我的 Unity 项目中,我通过脚本动态创建对象。

var btnExit = new GameObject("Player " + ID + "'s Exit Button");
btnExit.transform.SetParent(UI.transform);
Run Code Online (Sandbox Code Playgroud)

我需要设置对象的锚点和枢轴。我应该能够使用它的 RectTransform 组件来做到这一点,就像我在场景编辑器中创建对象时所做的那样。

myRectTransform.anchorMin = new Vector2(1, 0);
myRectTransform.anchorMax = new Vector2(0, 1);
myRectTransform.pivot = new Vector2(0.5f, 0.5f);
Run Code Online (Sandbox Code Playgroud)

但是对象的变换组件不是 RectTransform,只是普通的 Transform。所以我不能将它转换为使用我需要的那些属性。

RectTransform myRectTransform = (RectTransform)btnExit.transform;
Run Code Online (Sandbox Code Playgroud)

那么如何在我通过脚本而不是在场景编辑器中初始化的对象上正确使用 RectTransform 类的功能呢?

c# transform unity-game-engine

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

FluentAssertions:应该包含序列的每个元素

我有一个列表,每个元素也应该显示在另一个列表中,但不一定以相同的顺序显示。

我可能可以像这样用 foreach 来做断言

Assert.IsTrue(list1.Count == list2.Count);
foreach(var element in list1)
{
    Assert.IsTrue(list2.Count(e => e.Equals(element)) == 1);
}
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种使用 fluentAssertions 做到这一点的方法。元素不一定是相等的,而是等价的。它可能是这样的

list1.ShouldAll().BeEquivalentInAnyOrderTo(list2);
Run Code Online (Sandbox Code Playgroud)

但是我找不到任何可以轻松解决我的问题的东西。

使用 FluentAssertions 检查两个列表是否以任何顺序包含等效元素的最简单方法是什么?

c# unit-testing fluent-assertions

4
推荐指数
1
解决办法
1704
查看次数

使Discord bot使用NodeJS发送带有消息的图片

我有几张图片,全部在imgur上,带有直接图像链接(格式:https ://i.imgur.com/XXXXXX.jpg ),以及由NodeJS制作的Discord机器人。

我发送这样的消息:

bot.sendMessage({
    to: channelID,
    message: "My Bot's message"
});
Run Code Online (Sandbox Code Playgroud)

我已经试过了:

bot.sendMessage({
    to: channelID,
    message: "My Bot's message",
    file: "https://i.imgur.com/XxxXxXX.jpg"
});
Run Code Online (Sandbox Code Playgroud)

但我只得到文字。我已经查了一下,这个问题是唯一一个接近说我需要做的问题,而且没有用。

那我应该怎么做呢?

机器人的创建方法如下:

var bot = new Discord.Client({
   token: auth.token,
   autorun: true
});
bot.on('ready', function (evt) {
    logger.info('Connected');
    logger.info('Logged in as: ');
    logger.info(bot.username + ' - (' + bot.id + ')');
});
bot.on('message', function (user, userID, channelID, message, evt) {
    // My code
}
Run Code Online (Sandbox Code Playgroud)

javascript node.js discord

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

Android:如何查找选项卡布局中哪个选项卡处于活动状态?

我目前正在开发一个简单的 Android 应用程序。

\n\n

有一个登录页面,并且可以作为驾驶员或乘客登录,因此该页面中有不同的选项卡。

\n\n

我必须使用相同的“电子邮件”和“密码字段 a,以及相同的登录按钮。基本上唯一改变的是副标题

\n\n

http://i.imgur.com/LhAZABk.png

\n\n

我需要弄清楚按下登录按钮时哪个选项卡处于活动状态,以便使用正确的登录选项并将用户发送到正确的位置。

\n\n

以下是部分代码:

\n\n

登录布局:

\n\n
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"\n    xmlns:tools="http://schemas.android.com/tools"\n    android:layout_width="match_parent"\n    android:layout_height="match_parent"\n    xmlns:app="http://schemas.android.com/apk/res-auto"\n    android:paddingLeft="@dimen/activity_horizontal_margin"\n    android:paddingRight="@dimen/activity_horizontal_margin"\n    android:paddingTop="@dimen/activity_vertical_margin"\n    android:orientation="vertical"\n    android:paddingBottom="@dimen/activity_vertical_margin"\n    tools:context="com.domain.myname.schoolproject.Login_Screen">\n\n    <TextView\n        android:layout_width="wrap_content"\n        android:layout_height="wrap_content"\n        android:textAppearance="?android:attr/textAppearanceLarge"\n        android:text="@string/Nom_Application"\n        android:id="@+id/txtTitle"\n        android:textAlignment="center"\n        android:textColor="#010101"\n        android:textSize="45sp"\n        android:textStyle="bold"\n        android:autoText="false"\n        android:layout_alignParentTop="true"\n        android:layout_centerHorizontal="true" />\n\n    <TextView\n        android:layout_width="wrap_content"\n        android:layout_height="wrap_content"\n        android:textAppearance="?android:attr/textAppearanceMedium"\n        android:text="@string/Connexion"\n        android:id="@+id/txtSubtitle"\n        android:layout_marginTop="20dp"\n        android:textColor="#010101"\n        android:textSize="18sp"\n        android:textIsSelectable="false"\n        android:textStyle="bold"\n        android:layout_below="@+id/txtTitle"\n        android:layout_centerHorizontal="true" />\n\n    <ImageView\n        android:layout_width="120dp"\n        android:layout_height="wrap_content"\n        android:id="@+id/imgLeft"\n        android:src="@drawable/carleft"\n        android:layout_alignParentLeft="true"\n        android:layout_alignParentStart="true"\n        android:layout_marginTop="70dp"\n        android:contentDescription="@string/Description_ic\xc3\xb4ne" />\n\n    <ImageView\n        android:layout_width="120dp"\n        android:layout_height="wrap_content"\n        android:id="@+id/imgRight"\n        android:src="@drawable/carright"\n        android:layout_alignParentRight="true"\n        android:layout_alignParentEnd="true"\n        android:layout_alignBottom="@+id/imgLeft"\n        android:contentDescription="@string/Description_ic\xc3\xb4ne"\n        android:layout_alignParentStart="false" />\n\n    <android.support.v7.widget.Toolbar\n        android:id="@+id/toolbar"\n        android:layout_width="match_parent"\n …
Run Code Online (Sandbox Code Playgroud)

java android android-layout android-fragments

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

三维线与三角形之间的交点

我在3D空间的某个地方有一条线和一个三角形.换句话说,我有三个点([x,y,z]每个)三角形,和两个点(也是[x,y,z])的线.

我需要找出一种方法,希望使用C++来确定线是否曾经过三角形.与三角形平行且具有多个共同点的线应计为"不相交".

我已经制作了一些代码,但它不起作用,即使视觉表现清楚地显示了交叉点,我也总是假的.

ofVec3f P1, P2;
P1 = ray.s;
P2 = ray.s + ray.t;

ofVec3f p1, p2, p3;
p1 = face.getVertex(0);
p2 = face.getVertex(1);
p3 = face.getVertex(2);

ofVec3f v1 = p1 - p2;
ofVec3f v2 = p3 - p2;

float a, b, c, d;

a = v1.y * v2.z - v1.z * v2.y;
b = -(v1.x * v2.z - v1.z * v2.x);
c = v1.x * v2.y - v1.y * v2.x;
d = -(a * p1.x + b * p1.y …
Run Code Online (Sandbox Code Playgroud)

c++ 3d intersection line line-intersection

1
推荐指数
3
解决办法
5210
查看次数

File.ReadAllText 与 UTF-7 忽略 + 字符

我在磁盘上有一个由程序写入的文件,其中一些数据以 Json 编码。

我正在使用 C# 的 File.ReadAllText(string path, Encoding encoding) 稍后读取它。由于无关的原因,我们必须使用 UTF-7。

我们的行看起来像这样:

var content = File.ReadAllText(fileName, Encoding.UTF7);
Run Code Online (Sandbox Code Playgroud)

它工作正常,先写后读,基本上我们需要的一切。唯一的例外是加号 (+)。如果我们的文件中有 + 号,此代码将返回整个字符串,忽略所有这些。所以

{ "commandValue": "testvalue + otherValue" }
Run Code Online (Sandbox Code Playgroud)

变成

{ "commandValue": "testvalue  otherValue" }
Run Code Online (Sandbox Code Playgroud)

我检查了文件字节,+ 号确实是 char 0x2B,这是 UTF-7 中的正确字符(也是 UTF-8 中的相同字符,不确定是否重要)。

我无法弄清楚为什么它们在阅读时消失了。

为了测试,我试着用

var content = File.ReadAllText(fileName, Encoding.UTF8);
Run Code Online (Sandbox Code Playgroud)

它工作正常。字符没有消失。

我可能做错了什么,我怎么能让 File.ReadAllText(fileName, Encoding.UTF7) 不忽略这些字符?

到目前为止,我还没有发现另一个有这个问题的字符,但我显然没有测试所有的字符。

c# encoding utf-8 utf-7

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

C#如果是else的优先级if if

我的项目中有这段特定的代码:

if (type == 1)
    if (line.StartsWith(user.PadRight(FieldLengths1[0])))
        keep = true;
    else if (type == 2)
        if (line.StartsWith(user.PadRight(FieldLengths2[0])))
            keep = true;
Run Code Online (Sandbox Code Playgroud)

最初,缩进是不同的.else-if应该链接到"if(type == 1)",正如内容所暗示的那样.但Visual Studio似乎已经改变了我的缩进,建议将它链接到下一个if(if(line.startswith ...))

这可能相当于

if (type == 1)
{
    if (line.StartsWith(user.PadRight(FieldLengths1[0])))
        keep = true;
}
else if (type == 2)
{
    if (line.StartsWith(user.PadRight(FieldLengths2[0])))
        keep = true;
}
Run Code Online (Sandbox Code Playgroud)

或者对此:

if (type == 1)
{
    if (line.StartsWith(user.PadRight(FieldLengths1[0])))
        keep = true;
    else if (type == 2)
    {
        if (line.StartsWith(user.PadRight(FieldLengths2[0])))
            keep = true;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道else-if如何表现没有括号,以及究竟是什么决定它会链接到哪个?

c# if-statement

0
推荐指数
2
解决办法
287
查看次数

将已知长度数组转换为单独变量的简短方法

我有这段代码:

var input = aString.split(' ').map(Number);
var a = input[0];
var b = input[1];
var c = input[2];
var d = input[3];
Run Code Online (Sandbox Code Playgroud)

我知道字符串将始终有四个以空格分隔的条目,因此输入将始终是长度为4的数组.我将始终将这4个条目放入分离的变量中.

背景是代码高尔夫.为了这个问题,我已经使代码更具可读性,但是我不能在以后每次需要时使用输入[k](它比单个字符变量长).我希望很容易将它变成四个变量.例如,如果它是有效的javascript,则以下代码将是完美的:

var input = aString.split(' ').map(Number);
var a, b, c, d = input[0:3];
Run Code Online (Sandbox Code Playgroud)

我正在寻找一些方法来尽可能地减少将输入转换为一定数量变量的代码部分的大小.任何改进都是有用的,因为在实际情况中,有12个变量而不是4个(但它永远不会改变).如果我可以通过这种方式减少字符数,这是一个很大的改进.

javascript arrays

0
推荐指数
1
解决办法
37
查看次数