gpt4 book ai didi

c# - 你如何测试枚举标志组合?

转载 作者:太空宇宙 更新时间:2023-11-03 15:49:48 27 4
gpt4 key购买 nike

假设我有一个枚举标志:

[Flags]
public enum ColorType
{
None = 0,
Red = 1 << 0,
White = 1<<1,
Yellow = 1 << 2,
Blue = 1 << 3,
All = Red | White | Yellow | Blue
}

我有下面的函数,其中参数是标志的组合,例如 DoSomething( ColorType.Blue | ColorType.Yellow )。

public void DoSomethingr(ColorType theColorTypes)
{
if (theColorTypes.HasFlag(All)) Foo1();
if (theColorTypes.HasFlag(White) && theColorTypes.HasFlag(Red) ) Foo2();
if (!theColorTypes.HasFlag(Blue)) Foo3();
. . .
}

是否有一种简单的方法来测试所有可能的标志位组合?

[Test] 
public void Test1(ColorType.Red | ColorType.Yellow | ColorType.White)

[Test]
public void Test1(ColorType.Red | ColorType.Yellow | ColorType.white | ColorType.Blue)

谢谢

最佳答案

遍历所有可能的值并将其放入 TestCaseSource 中为每个枚举值生成不同的测试:

public IEnumerable<ColorType> TestCaseSource 
{
get
{
int start = (int)ColorType.None;
int count = (int)ColorType.All - start + 1;
return Enumerable.Range(start, count).Select(i => (ColorType)i);
}
}

[TestCaseSource("TestCaseSource")]
public void Test1(ColorType colorType)
{
// whatever your test is
}

关于c# - 你如何测试枚举标志组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26369953/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com