From VisualWorks® NonCommercial, 7.2 of November 3, 2003 on July 7, 2004 at 12:27:39 pm GerenciadorDeSalasTest Smalltalk XProgramming.SUnit.TestCase false none gerenciador nomeDaB3 localDaB3 capacidadeDaB3 b3 nomeDoAuditorio localDoAuditorio capacidadeDoAuditorio obsDoAuditorio auditorio quentura frescura cloneMalignoDaB3 NomeDoMeuPacoteAqui NomeDoMeuPacoteAqui GerenciadorDeSalasTest class instance creation new "Answer a newly created and initialized instance." ^super new initialize GerenciadorDeSalasTest initialize-release initialize "Initialize a newly created instance. This method must answer the receiver." ^self GerenciadorDeSalasTest testing setUp "sets some stuff up so that we can use it in all tests" gerenciador := GerenciadorDeSalas new. nomeDaB3 := 'B-3'. localDaB3 := 'IME - Bloco B - Térreo'. capacidadeDaB3 := 60. b3 := Sala new. b3 nome: nomeDaB3; local: localDaB3; capacidade: capacidadeDaB3; obs: nil. nomeDoAuditorio := 'Auditório Antonio Giglioli'. localDoAuditorio:= 'IME - Bloco A - Primeiro Andar'. capacidadeDoAuditorio := 95. obsDoAuditorio := 'Possui projetor LCD, rede com e sem fio e lousa eletrônica'. auditorio := Sala new. auditorio nome: nomeDoAuditorio; local: localDoAuditorio; capacidade: capacidadeDoAuditorio; obs: obsDoAuditorio. quentura := Sala new. quentura nome: 'b-143'. frescura := Sala new. frescura nome: 'b-115'. cloneMalignoDaB3 := Sala new. cloneMalignoDaB3 nome: 'B-3'. testaAdcionaMesmaSalaDuasVezes self adicionaSalaAuditorio. self should: [self adicionaSalaAuditorio.] raise: Exception. testaAdcionaSalaComStringsEVeALista self adicionaSalaAuditorioUsandoStrings. self assert: gerenciador listaDeSalas size = 1. self assert: (gerenciador listaDeSalas at: 1) nome = nomeDoAuditorio. self assert: (gerenciador listaDeSalas at: 1) capacidade = capacidadeDoAuditorio. self assert: (gerenciador listaDeSalas at: 1) local = localDoAuditorio. self assert: (gerenciador listaDeSalas at: 1) obs = obsDoAuditorio. testaAdcionaSalaEVeALista self adicionaSalaB3. self assert: gerenciador listaDeSalas size = 1. self assert: (gerenciador listaDeSalas at: 1) = b3. testaAdcionaSalasComMesmoNome self adicionaSalaB3. self should: [self adicionaSalaB3UsandoStrings.] raise: Exception. testaAdcionaSalasComMesmoNome2 self adicionaSalaAuditorioUsandoStrings. self should: [self adicionaSalaAuditorioUsandoStrings.] raise: Exception. testaAdcionaSalasEVeALista | count | self adicionaSalaAuditorioUsandoStrings. self adicionaSalaB3. self adicionaSalaFrescura. self adicionaSalaQuentura. self assert: gerenciador listaDeSalas size = 4. count := 4. gerenciador listaDeSalas do: [:sala | sala nome = nomeDoAuditorio ifTrue: [count := count - 1.]. sala nome = nomeDaB3 ifTrue: [count := count - 1.]. sala nome = frescura nome ifTrue: [count := count - 1.]. sala nome = quentura nome ifTrue: [count := count - 1.]. ]. self assert: count = 0. testaAdcionaSalasRemoveEVeALista | count | self adicionaSalaAuditorioUsandoStrings. self adicionaSalaB3. self adicionaSalaFrescura. self adicionaSalaQuentura. gerenciador removeSalaChamada: nomeDoAuditorio. self assert: gerenciador listaDeSalas size = 3. count := 3. gerenciador listaDeSalas do: [:sala | sala nome = nomeDaB3 ifTrue: [count := count - 1.]. sala nome = frescura nome ifTrue: [count := count - 1.]. sala nome = quentura nome ifTrue: [count := count - 1.]. ]. self assert: count = 0. testaBuscaReservasDeSalaQueNaoExisteMasTemMesmoNome self adicionaSalaB3UsandoStrings. gerenciador reservaSalaChamada: nomeDaB3 de: Timestamp now a: (Timestamp now addSeconds: 60*60). self should: [gerenciador reservasParaSala: cloneMalignoDaB3] raise: Exception. testaCancelaDuasVezesAMesmaReserva | comeco fim umaReserva | self adicionaSalaFrescura. comeco := Timestamp now. fim := Timestamp now addSeconds: 60*60. umaReserva := gerenciador reservaSalaChamada: frescura nome de: comeco a: fim. gerenciador cancelaReserva: umaReserva. self should: [gerenciador cancelaReserva: umaReserva.] raise: Exception. testaCancelaReservaQueNaoExiste | umaReservaQueNaoExiste | umaReservaQueNaoExiste:= Reserva new. self should: [gerenciador cancelaReserva: umaReservaQueNaoExiste.] raise: Exception. testaCriacaoDeReservaComComecoIgualAoFim | time | self adicionaSalaAuditorio. time := (Timestamp now). self should: [gerenciador reservaSalaChamada: nomeDoAuditorio de: time a: time.] raise: Exception. testaCriacaoDeReservaComFimAntesDoComeco self adicionaSalaAuditorio. self should: [gerenciador reservaSalaChamada: nomeDoAuditorio de: (Timestamp now addSeconds: 60*60) a: Timestamp now.] raise: Exception. testaCriacaoDeReservaComSalaJaCriada | comeco fim umaReserva | self adicionaSalaFrescura. comeco := Timestamp now. fim := Timestamp now addSeconds: 60*60. umaReserva := gerenciador reservaSalaChamada: frescura nome de: comeco a: fim. self assert: umaReserva sala = frescura. self assert: umaReserva inicio = comeco. self assert: umaReserva fim = fim. testaCriacaoDeReservaComStringsDaSala | comeco fim umaReserva | self adicionaSalaB3UsandoStrings. comeco := Timestamp now. fim := Timestamp now addSeconds: 60*60. umaReserva := gerenciador reservaSalaChamada: nomeDaB3 de: comeco a: fim. self assert: umaReserva sala nome = nomeDaB3. self assert: umaReserva sala local = localDaB3. self assert: umaReserva sala capacidade = capacidadeDaB3. self assert: umaReserva sala obs = nil. self assert: umaReserva inicio = comeco. self assert: umaReserva fim = fim. testaCriacaoDeReservaDeSalaQueNaoExiste self should: [gerenciador reservaSalaChamada: 'nao existe' de: Timestamp now a: (Timestamp now addSeconds: 60).] raise: Exception. testaCriacaoDeSala self assert: b3 nome = nomeDaB3. self assert: b3 local = localDaB3. self assert: b3 capacidade = capacidadeDaB3. self assert: b3 observacoes = nil. "aqui pode ter gente q chamou de observacoes" self assert: auditorio obs = obsDoAuditorio. testaImprimeReservasDeSalaQueNaoExiste self should: [gerenciador imprimeReservasDaSala: b3.] raise: Exception. testaImprimeReservasDeSalaQueNaoTemReservas self adicionaSalaB3. gerenciador imprimeReservasDaSala: b3. testaRemoveMesmaSalaDuasVezes self adicionaSalaAuditorio. gerenciador removeSalaChamada: nomeDoAuditorio. self should: [gerenciador removeSalaChamada: nomeDoAuditorio.] raise: Exception. testaRemoveMesmaSalaDuasVezes2 self adicionaSalaCloneDaB3. gerenciador removeSalaChamada: nomeDaB3. self should: [gerenciador removeSalaChamada: nomeDaB3.] raise: Exception. testaRemoveSalaQueNaoExiste self should: [gerenciador removeSalaChamada: nomeDoAuditorio.] raise: Exception. testaReservasComSobreposicao | tempo1 tempo1f | self adicionaSalaB3. tempo1 := Timestamp readFromDateAndTime: ('11/1/2005 10:00' readStream). tempo1f := Timestamp readFromDateAndTime: ('11/11/2005 10:00' readStream). gerenciador reservaSalaChamada: nomeDaB3 de: tempo1 a: tempo1f. self should: [gerenciador reservaSalaChamada: nomeDaB3 de: (tempo1 addSeconds: 60*60) a: (tempo1f subtractSeconds: 60*60).] raise: Exception. testaReservasComSobreposicao2 | tempo1 tempo1f | self adicionaSalaB3. tempo1 := Timestamp readFromDateAndTime: ('11/1/2005 10:00' readStream). tempo1f := Timestamp readFromDateAndTime: ('11/11/2005 10:00' readStream). gerenciador reservaSalaChamada: nomeDaB3 de: tempo1 a: tempo1f. self should: [gerenciador reservaSalaChamada: nomeDaB3 de: (tempo1 subtractSeconds: 60*60) a: (tempo1 addSeconds: 60*60).] raise: Exception. testaReservasComSobreposicao3 | tempo1 tempo1f | self adicionaSalaB3. tempo1 := Timestamp readFromDateAndTime: ('11/1/2005 10:00' readStream). tempo1f := Timestamp readFromDateAndTime: ('11/11/2005 10:00' readStream). gerenciador reservaSalaChamada: nomeDaB3 de: tempo1 a: tempo1f. self should: [gerenciador reservaSalaChamada: nomeDaB3 de: (tempo1f subtractSeconds: 60*60) a: (tempo1f addSeconds: 60*60).] raise: Exception. testaReservasComSobreposicaoCancelando | tempo1 tempo1f reserva1 | self adicionaSalaB3. tempo1 := Timestamp readFromDateAndTime: ('5/9/2005 6:00' readStream). tempo1f := Timestamp readFromDateAndTime: ('5/9/2005 11:00' readStream). reserva1 := gerenciador reservaSalaChamada: nomeDaB3 de: tempo1 a: tempo1f. gerenciador cancelaReserva: reserva1. gerenciador reservaSalaChamada: nomeDaB3 de: (tempo1 subtractSeconds: 60*60) a: (tempo1f addSeconds: 60*60). testaVariasReservasECancela | count tempo1 reserva1 tempo2 reserva2 tempo3 reserva3 | self adicionaSalaB3. tempo1 := Timestamp readFromDateAndTime: ('11/1/2005 10:00' readStream). reserva1 := gerenciador reservaSalaChamada: nomeDaB3 de: tempo1 a: (tempo1 addSeconds: 60*60). tempo2 := Timestamp readFromDateAndTime: ('11/2/2005 8:00' readStream). reserva2 := gerenciador reservaSalaChamada: nomeDaB3 de: tempo2 a: (tempo2 addSeconds: 60*60). tempo3 := Timestamp readFromDateAndTime: ('6/6/2005 9:27' readStream). reserva3 := gerenciador reservaSalaChamada: nomeDaB3 de: tempo3 a: (tempo3 addSeconds: 60*60). gerenciador cancelaReserva: reserva1. self assert: (gerenciador reservasParaSala: b3) size = 2. count := 2. (gerenciador reservasParaSala: b3) do: [:reserva | reserva = reserva2 ifTrue: [count := count -1]. reserva = reserva3 ifTrue: [count := count -1]. ]. self assert: count = 0. testaVariasReservasEImprime | tempo1 tempo2 tempo3 tempo1f | self adicionaSalaB3. tempo1 := Timestamp readFromDateAndTime: ('11/1/2005 10:00' readStream). tempo1f := Timestamp readFromDateAndTime: ('11/11/2005 10:00' readStream). gerenciador reservaSalaChamada: nomeDaB3 de: tempo1 a: tempo1f. tempo2 := Timestamp readFromDateAndTime: ('2/20/2005 8:00' readStream). gerenciador reservaSalaChamada: nomeDaB3 de: tempo2 a: (tempo2 addSeconds: 60*60). tempo3 := Timestamp readFromDateAndTime: ('6/6/2005 9:27' readStream). gerenciador reservaSalaChamada: nomeDaB3 de: tempo3 a: (tempo3 addSeconds: 60*60). gerenciador imprimeReservasDaSala: b3. testaVariasReservasERemoveASala | tempo1 tempo2 tempo3 tempo1f | self adicionaSalaB3. tempo1 := Timestamp readFromDateAndTime: ('11/1/2005 10:00' readStream). tempo1f := Timestamp readFromDateAndTime: ('11/11/2005 10:00' readStream). gerenciador reservaSalaChamada: nomeDaB3 de: tempo1 a: tempo1f. tempo2 := Timestamp readFromDateAndTime: ('2/20/2005 8:00' readStream). gerenciador reservaSalaChamada: nomeDaB3 de: tempo2 a: (tempo2 addSeconds: 60*60). tempo3 := Timestamp readFromDateAndTime: ('6/6/2005 9:27' readStream). gerenciador reservaSalaChamada: nomeDaB3 de: tempo3 a: (tempo3 addSeconds: 60*60). gerenciador removeSalaChamada: nomeDaB3. self should: [gerenciador reservasParaSala: b3] raise: Exception. testaVariasReservasEVeALista | count tempo1 reserva1 tempo2 reserva2 tempo3 reserva3 | self adicionaSalaB3. tempo1 := Timestamp readFromDateAndTime: ('11/1/2005 10:00' readStream). reserva1 := gerenciador reservaSalaChamada: nomeDaB3 de: tempo1 a: (tempo1 addSeconds: 60*60). tempo2 := Timestamp readFromDateAndTime: ('11/2/2005 8:00' readStream). reserva2 := gerenciador reservaSalaChamada: nomeDaB3 de: tempo2 a: (tempo2 addSeconds: 60*60). tempo3 := Timestamp readFromDateAndTime: ('6/6/2005 9:27' readStream). reserva3 := gerenciador reservaSalaChamada: nomeDaB3 de: tempo3 a: (tempo3 addSeconds: 60*60). self assert: (gerenciador reservasParaSala: b3) size = 3. count := 3. (gerenciador reservasParaSala: b3) do: [:reserva | reserva = reserva1 ifTrue: [count := count -1]. reserva = reserva2 ifTrue: [count := count -1]. reserva = reserva3 ifTrue: [count := count -1]. ]. self assert: count = 0. GerenciadorDeSalasTest private adicionaSalaAuditorio gerenciador adicionaSala: auditorio. adicionaSalaAuditorioUsandoStrings gerenciador adicionaSalaChamada: nomeDoAuditorio noLocal: localDoAuditorio comCapacidade: capacidadeDoAuditorio obs: obsDoAuditorio. adicionaSalaB3 gerenciador adicionaSala: b3. adicionaSalaB3UsandoStrings gerenciador adicionaSalaChamada: nomeDaB3 noLocal: localDaB3 comCapacidade: capacidadeDaB3 obs: nil. adicionaSalaCloneDaB3 gerenciador adicionaSala: cloneMalignoDaB3. adicionaSalaFrescura gerenciador adicionaSala: frescura. adicionaSalaQuentura gerenciador adicionaSala: quentura.