# Testes Explicação de testes privados que falharam. Nos testes privados devem ter mais atenção aos arrays: * **Cp2TestPrivate. test_1_06_ArrayAccessOnInt** :: não deve ser possível fazer `a = 10; b = a[10];` * **Cp2TestPrivate. test_1_07_ArrayIndexNotInt** :: O index de um array deve ser apenas um inteiro. Ex: `a[true];` não deve ser possível nem `a = new Test(); b[a]` onde `b` é um array. * **Cp2TestPrivate. test_1_08_AssignIntToBool** :: Ex.`b = new int[1]; b[0] = false;` * Cp2TestPrivate. test_1_09_ObjectAssignmentFail :: mesmo caso do teste público * **Cp2TestPrivate. test_1_12_IntInIfCondition** :: mesmo caso do teste público mas com atenção a arrays dentro de ifs e expressões. Ex: `if(a[10] * 2)` não deve ser possível, já que não é um booleano. * **Cp2TestPrivate. test_1_13_ObjInWhileCondition** :: Ex. `a = new A(); while(a){}` * **Cp2TestPrivate. test_1_15_CallToMethodAssumedInExtends** :: Aqui o vosso código retorna um erro semântico sendo que não era suposto. ```java import A; class Test extends A { public static void main(String[] args) { } public int foo() { Test a; a = new Test(); // Assume bar() is in A return a.bar(); } } ``` O vosso teste diz que há um erro semántico, porque `Test` não possui o método `bar()`. Mas `Test` faz extends de `A`. Então na verdade `A` pode implementar `bar()`. * **Cp2TestPrivate. test_1_16_CallToMethodAssumedInImport** :: a mesma cena do teste anteior. Há um extends, mas vosso código dá um erro semântico. * **Cp2TestPrivate. test_1_17_IncompatibleArguments** :: verificar os tipos de argumentos de um método. Mesma problema do teste público. * **Cp2TestPrivate. test_1_18_IncompatibleReturn** :: mesmo problema do teste público. * **Cp2TestPrivate. test_1_19_AssumeArguments** :: mesmo problema do teste público. * **Cp2TestPrivate. test_2_01_CompileBasic** :: o vosso código da uma exceção: não é possível aceder o atributo `name`. Parece que não consideram isto: ``` int c; c = 1+2; ``` * **Cp2TestPrivate. test_2_02_CompileArithmetic** :: mesma exceção do teste anterior: `Node MemberCall (col: 24, line: 26) does not contain attribute 'name'`. Nesta expressão: ` return a + b * t.foo();`. * **Cp2TestPrivate. test_2_03_CompileMethodInvocation** :: mesma exceção dos testes anteriores. Desta vez causado pelo código retornar uma função static: `ex: return Bla.queroNumero()` * **Cp2TestPrivate. test_2_04_CompileAssignment** :: exceção no ollir. Parece que o ollir não gostou de um boolean assignment. * **Cp2TestPrivate. test_3_02_OllirToJasminArithmetics** :: não foi implementado * **Cp2TestPrivate. test_3_03_OllirToJasminInvoke** :: não foi implementado.