@Test
public void testFunctionDefEqualsAndHashCode() {
TestCaseBuilder.newTestCase()
.addTrueCase(new FunctionDef(null), new FunctionDef(null))
.addTrueCase(new FunctionDef(null, null), new FunctionDef(null, null))
.addTrueCase(new FunctionDef("name"), new FunctionDef("name"))
.addTrueCase(new FunctionDef("name", null), new FunctionDef("name", null))
.addTrueCase(new FunctionDef("name", Arrays.asList(new ParamDef("param1", "type1"))), new FunctionDef("name", Arrays.asList(new ParamDef("param1", "type1"))))
.addFalseCase(new FunctionDef("name"), new FunctionDef(null))
.addFalseCase(new FunctionDef("name", null), new FunctionDef(null, null))
.addFalseCase(new FunctionDef("name", new ArrayList<>()), new FunctionDef("name", null))
.addFalseCase(new FunctionDef("name"), new FunctionDef("name1"))
.addFalseCase(new FunctionDef("name", Arrays.asList(new ParamDef("param1", "type1"))), new FunctionDef("name1", new ArrayList<>()))
.addFalseCase(new FunctionDef("name", Arrays.asList(new ParamDef("param1", "type1"))), new FunctionDef("name", Arrays.asList(new ParamDef("param2", "type1"))))
.addFalseCase(new FunctionDef("name", Arrays.asList(new ParamDef("param1", "type1"))), new FunctionDef("name", Arrays.asList(new ParamDef("param1", "type2"))))
.test();
}