---
# System prepended metadata

title: Testes

---

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