Skip to content

Commit

Permalink
Add needs test for and/or and capitalization
Browse files Browse the repository at this point in the history
  • Loading branch information
blowfishpro committed Oct 5, 2017
1 parent 3dbfbb1 commit 92ae91f
Showing 1 changed file with 93 additions and 0 deletions.
93 changes: 93 additions & 0 deletions ModuleManagerTests/NeedsCheckerTest.cs
Expand Up @@ -59,6 +59,99 @@ public void TestCheckNeeds__Root()
progress.Received().NeedsUnsatisfiedRoot(config7);
}

[Fact]
public void TestCheckNeeds__Root__AndOr()
{
string[] modList = { "mod1", "mod2" };

UrlDir.UrlConfig noNeedsNode = UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE"), file);

UrlDir.UrlConfig[] needsSatisfiedConfigs = new[] {
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[mod1&mod2]"), file),
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[mod1,mod2]"), file),
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[mod1|mod2]"), file),
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[mod1|mod3]"), file),
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[mod1&mod2|mod3]"), file),
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[mod1,mod2|mod3]"), file),
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[mod1|mod3&mod1]"), file),
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[mod1|mod,mod1]"), file),
};

UrlDir.UrlConfig[] needsUnsatisfiedConfigs = new[] {
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[mod1&mod3]"), file),
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[mod1,mod3]"), file),
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[mod1&mod2&mod3]"), file),
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[mod1,mod2,mod3]"), file),
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[mod3|mod4]"), file),
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[mod1|mod2&mod3]"), file),
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[mod1|mod2,mod3]"), file),
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[mod3&mod1|mod2]"), file),
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[mod3,mod1|mod2]"), file),
};

NeedsChecker.CheckNeeds(root, modList, progress, logger);

progress.DidNotReceiveWithAnyArgs().Exception(null, null);
progress.DidNotReceiveWithAnyArgs().Exception(null, null, null);
progress.DidNotReceiveWithAnyArgs().Error(null, null);

UrlDir.UrlConfig[] configs = root.AllConfigs.ToArray();
Assert.Equal(needsSatisfiedConfigs.Length + 1, configs.Length);

Assert.Same(noNeedsNode, configs[0]);

for (int i = 0; i < needsSatisfiedConfigs.Length; i++)
{
AssertUrlCorrect("SOME_NODE", needsSatisfiedConfigs[i], configs[i + 1]);
}

foreach (UrlDir.UrlConfig config in needsUnsatisfiedConfigs)
{
progress.Received().NeedsUnsatisfiedRoot(config);
}
}

[Fact]
public void TestCheckNeeds__Root__CaseInsensitive()
{
string[] modList = { "mod1", "mod2" };

UrlDir.UrlConfig noNeedsNode = UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE"), file);

UrlDir.UrlConfig[] needsSatisfiedConfigs = new[] {
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[mod1]"), file),
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[Mod1]"), file),
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[MOD1]"), file),
};

UrlDir.UrlConfig[] needsUnsatisfiedConfigs = new[] {
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[mod3]"), file),
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[Mod3]"), file),
UrlBuilder.CreateConfig(new ConfigNode("SOME_NODE:NEEDS[MOD3]"), file),
};

NeedsChecker.CheckNeeds(root, modList, progress, logger);

progress.DidNotReceiveWithAnyArgs().Exception(null, null);
progress.DidNotReceiveWithAnyArgs().Exception(null, null, null);
progress.DidNotReceiveWithAnyArgs().Error(null, null);

UrlDir.UrlConfig[] configs = root.AllConfigs.ToArray();
Assert.Equal(needsSatisfiedConfigs.Length + 1, configs.Length);

Assert.Same(noNeedsNode, configs[0]);

for (int i = 0; i < needsSatisfiedConfigs.Length; i++)
{
AssertUrlCorrect("SOME_NODE", needsSatisfiedConfigs[i], configs[i + 1]);
}

foreach (UrlDir.UrlConfig config in needsUnsatisfiedConfigs)
{
progress.Received().NeedsUnsatisfiedRoot(config);
}
}

[Fact]
public void TestCheckNeeds__Nested()
{
Expand Down

0 comments on commit 92ae91f

Please sign in to comment.