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
|
// Void-type
|
||||||
if (values.size() == 0)
|
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;
|
return new VoidValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -244,5 +244,77 @@ namespace TestHazelnupp
|
|||||||
|
|
||||||
return;
|
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