# 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.