diff options
| author | Melodi <62381002+Melodi17@users.noreply.github.com> | 2026-10-28 19:48:59 +1000 |
|---|---|---|
| committer | Melodi <62381002+Melodi17@users.noreply.github.com> | 2026-10-28 19:48:59 +1000 |
| commit | 38a050c8151b9894c62b2d49ef482807412ea98c (patch) | |
| tree | b26d90c19acac2dfcb8d9a62d9503dc52789db79 /src/marlin.tests/VariableExpanderTests.cs | |
| parent | e566edc0442330c11906da384d589c47f836de37 (diff) | |
feat: ui changes; ci: add tests
Diffstat (limited to 'src/marlin.tests/VariableExpanderTests.cs')
| -rw-r--r-- | src/marlin.tests/VariableExpanderTests.cs | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/marlin.tests/VariableExpanderTests.cs b/src/marlin.tests/VariableExpanderTests.cs new file mode 100644 index 0000000..c04152e --- /dev/null +++ b/src/marlin.tests/VariableExpanderTests.cs @@ -0,0 +1,39 @@ +namespace marlin.tests; + +using core.util; + +public class VariableExpanderTests +{ + private Dictionary<string, string> _variables = new(); + + [SetUp] + public void Setup() + { + this._variables["name"] = "john"; + this._variables["branch"] = "master"; + } + + [TestCase("hello world", "hello world")] // passthroughs + [TestCase("hi {name}!", "hi john!")] // classic variable expansion + [TestCase("hi {name=bob}!", "hi john!")] // existent variable with fallback + [TestCase("hi {nonvar=bob}!", "hi bob!")] // non-existent variable with fallback + [TestCase("hi {name? plane}!", "hi plane!")] // use value if set + [TestCase("hi {nonvar? plane}!", "hi !")] // omit value if not set + [TestCase("mycommand {--checkout branch}", "mycommand --checkout master")] // inject cli arg when set + [TestCase("mycommand {--checkout nonvar}", "mycommand")] // omit cli arg when not set + [TestCase("i will {{escape}}", "i will {escape}")] // escaping works + public void ExpansionMatches(string input, string output) + { + var result = VariableExpander.Expand(input, this._variables); + Assert.That(result, Is.EqualTo(output)); + } + + [TestCase("un {", typeof(UnmatchedBraceException))] // unmatched leading + [TestCase("un }", typeof(UnmatchedBraceException))] // unmatched trailing + [TestCase("{nonvar}", typeof(VariableNotFoundException))] // non existent variable + public void ExpansionFails(string input, Type exceptionType) + { + Assert.That(() => VariableExpander.Expand(input, this._variables), + Throws.TypeOf(exceptionType)); + } +}
\ No newline at end of file |
