Enabled void->list conversion in parse-time
This commit is contained in:
parent
e16bda06a4
commit
ce90ff689b
@ -161,6 +161,11 @@ Value* Hazelnupp::ParseValue(const std::vector<std::string>& values, const Param
|
||||
// Void-type
|
||||
if (values.size() == 0)
|
||||
{
|
||||
// Is a list forced via a constraint? If yes, return an empty list
|
||||
if ((constrainType) &&
|
||||
(constraint->wantedType == DATA_TYPE::LIST))
|
||||
return new ListValue();
|
||||
|
||||
return new VoidValue;
|
||||
}
|
||||
|
||||
|
@ -244,5 +244,77 @@ namespace TestHazelnupp
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Tests that everything can be converted to void
|
||||
TEST_METHOD(Weird_Load_Conversions_ToVoid)
|
||||
{
|
||||
// Setup
|
||||
ArgList args({
|
||||
"/my/fake/path/wahoo.out",
|
||||
"--dummy",
|
||||
"--void1",
|
||||
"--void2",
|
||||
"12",
|
||||
"--void3",
|
||||
"9.5",
|
||||
"--void4",
|
||||
"hello",
|
||||
"--void5",
|
||||
"foo",
|
||||
"baz"
|
||||
});
|
||||
|
||||
Hazelnupp nupp;
|
||||
nupp.SetCrashOnFail(false);
|
||||
|
||||
nupp.RegisterConstraints({
|
||||
ParamConstraint::TypeSafety("--void1", DATA_TYPE::VOID),
|
||||
ParamConstraint::TypeSafety("--void2", DATA_TYPE::VOID),
|
||||
ParamConstraint::TypeSafety("--void3", DATA_TYPE::VOID),
|
||||
ParamConstraint::TypeSafety("--void4", DATA_TYPE::VOID),
|
||||
ParamConstraint::TypeSafety("--void5", DATA_TYPE::VOID)
|
||||
});
|
||||
|
||||
|
||||
// Exercise
|
||||
nupp.Parse(C_Ify(args));
|
||||
|
||||
// Verify
|
||||
Assert::IsTrue(nupp["--void1"].GetDataType() == DATA_TYPE::VOID);
|
||||
Assert::IsTrue(nupp["--void2"].GetDataType() == DATA_TYPE::VOID);
|
||||
Assert::IsTrue(nupp["--void3"].GetDataType() == DATA_TYPE::VOID);
|
||||
Assert::IsTrue(nupp["--void4"].GetDataType() == DATA_TYPE::VOID);
|
||||
Assert::IsTrue(nupp["--void5"].GetDataType() == DATA_TYPE::VOID);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
// Tests that everything a void can be converted to an empty list
|
||||
TEST_METHOD(Weird_Load_Conversions_VoidToEmptyList)
|
||||
{
|
||||
// Setup
|
||||
ArgList args({
|
||||
"/my/fake/path/wahoo.out",
|
||||
"--dummy",
|
||||
"--empty-list",
|
||||
});
|
||||
|
||||
Hazelnupp nupp;
|
||||
nupp.SetCrashOnFail(false);
|
||||
|
||||
nupp.RegisterConstraints({
|
||||
ParamConstraint::TypeSafety("--empty-list", DATA_TYPE::LIST),
|
||||
});
|
||||
|
||||
|
||||
// Exercise
|
||||
nupp.Parse(C_Ify(args));
|
||||
|
||||
// Verify
|
||||
Assert::IsTrue(nupp["--empty-list"].GetDataType() == DATA_TYPE::LIST);
|
||||
Assert::AreEqual(std::size_t(0), nupp["--empty-list"].GetList().size());
|
||||
|
||||
return;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user