Object subclass: #Partido instanceVariableNames: 'leyendas votos nombre' classVariableNames: '' poolDictionaries: '' category: 'Foolmatic-Modelo'! !Partido methodsFor: 'accessing' stamp: 'tomas 9/5/2019 20:05'! nombre: unNombre nombre := unNombre.! ! !Partido methodsFor: 'accessing' stamp: 'tomas 9/5/2019 20:29'! nombre ^ nombre.! ! !Partido methodsFor: 'accessing' stamp: 'tomas 9/5/2019 21:04'! votos ^ votos! ! !Partido methodsFor: 'initialization' stamp: 'tomas 9/5/2019 19:56'! initialize votos := 0. ! ! !Partido methodsFor: 'initialization' stamp: 'tomas 9/7/2019 18:24'! leyendas: unasLeyendas leyendas := unasLeyendas asOrderedCollection! ! !Partido methodsFor: 'as yet unclassified' stamp: 'tomas 9/9/2019 21:13'! votar: unNombreDeLeyenda (leyendas includes: unNombreDeLeyenda) ifTrue: [ votos := votos + 1 ].! ! !Partido methodsFor: 'as yet unclassified' stamp: 'tomas 9/7/2019 18:28'! leGanaA: otroPartido ^ votos > (otroPartido votos)! ! "-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "! Partido class instanceVariableNames: ''! !Partido class methodsFor: 'as yet unclassified' stamp: 'tomas 9/5/2019 20:05'! conNombre: unNombre conLeyendas: unasLeyendas | unPartido | unPartido := self new. unPartido nombre: unNombre. unPartido leyendas: unasLeyendas. ^ unPartido.! ! Object subclass: #SmartMatic instanceVariableNames: 'partidos' classVariableNames: '' poolDictionaries: '' category: 'Foolmatic-Modelo'! !SmartMatic methodsFor: 'as yet unclassified' stamp: 'tomas 9/5/2019 20:39'! agregarPartido: unPartido partidos add: unPartido.! ! !SmartMatic methodsFor: 'as yet unclassified' stamp: 'tomas 9/5/2019 21:20'! votar: unNombreDeLeyenda partidos do: [ :partido | partido votar: unNombreDeLeyenda ]. ! ! !SmartMatic methodsFor: 'as yet unclassified' stamp: 'tomas 9/9/2019 21:11'! nombrePartidoGanador partidos ifEmpty: [ ^ 'nadie' ]. partidos sort: [ :unPartido :otroPartido | unPartido leGanaA: otroPartido ]. ^ (partidos at: 1) nombre! ! !SmartMatic methodsFor: 'initialization' stamp: 'tomas 9/7/2019 18:28'! initialize partidos := OrderedCollection new! ! TestCase subclass: #PruebasPartido instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Foolmatic-Tests'! !PruebasPartido methodsFor: 'tests' stamp: 'tomas 9/9/2019 21:02'! test04VotoDosVecesAPartidoConDosLeyendasCorrectaYSeContabilizanDosVotos " Arrange " | partido | partido := Partido conNombre: 'Todos' conLeyendas: #('Vamos a volver' 'Justicia social'.). " Act " partido votar: 'Justicia social'. partido votar: 'Vamos a volver'. " Assert " self assert: (partido votos) equals: 2.! ! !PruebasPartido methodsFor: 'tests' stamp: 'tomas 9/9/2019 20:55'! test01VotoAPartidoConSuLeyendaCorrectaYSeContabilizaElVoto " Arrange " | partido | partido := Partido conNombre: 'Todos' conLeyendas: #('Vamos a volver'). " Act " partido votar: 'Vamos a volver'. " Assert " self assert: (partido votos) equals: 1.! ! !PruebasPartido methodsFor: 'tests' stamp: 'tomas 9/9/2019 20:56'! test02VotoAPartidoConLeyendaIncorrectaYNoSeContabilizaElVoto " Arrange " | partido | partido := Partido conNombre: 'Todos' conLeyendas: #('Vamos a volver'). " Act " partido votar: 'No se inunda mas'. " Assert " self assert: (partido votos) equals: 0.! ! !PruebasPartido methodsFor: 'tests' stamp: 'tomas 9/9/2019 20:57'! test03VotoAPartidoSinLeyendasYNoSeContabilizaElVoto " Arrange " | partido | partido := Partido conNombre: 'Todos' conLeyendas: #(). " Act " partido votar: 'Justicia social'. " Assert " self assert: (partido votos) equals: 0.! ! !PruebasPartido methodsFor: 'tests' stamp: 'tomas 9/9/2019 21:03'! test05VotoDosVecesAPartidoConUnaLeyendaCorrectaYOtraIncorrectaYSeContabilizanUnVoto " Arrange " | partido | partido := Partido conNombre: 'Todos' conLeyendas: #('Vamos a volver' 'Justicia social'.). " Act " partido votar: 'Justicia social'. partido votar: 'Si se puede'. " Assert " self assert: (partido votos) equals: 1.! ! TestCase subclass: #PruebasSmartMatic instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Foolmatic-Tests'! !PruebasSmartMatic methodsFor: 'tests' stamp: 'tomas 9/9/2019 21:09'! test03VotoAlUnicoPartidoYGana " Arrange " | smartmatic partido leyendasTodos | leyendasTodos := #('esto es fraude'). partido := Partido conNombre: 'Fraude' conLeyendas: leyendasTodos. smartmatic := SmartMatic new. smartmatic agregarPartido: partido. " Act " smartmatic votar: 'esto es fraude'. " Assert " self assert: (smartmatic nombrePartidoGanador) equals: 'Fraude'.! ! !PruebasSmartMatic methodsFor: 'tests' stamp: 'tomas 9/9/2019 21:13'! test04VotoAUnSistemaSinPartidosYGanaNadie " Arrange " | smartmatic | smartmatic := SmartMatic new. " Act " smartmatic votar: 'quien se hace cargo de lo que hizo el gato?'. " Assert " self assert: (smartmatic nombrePartidoGanador) equals: 'nadie'.! ! !PruebasSmartMatic methodsFor: 'tests' stamp: 'tomas 9/7/2019 18:25'! test01VotoAPartidoTodosDosVecesYACambiemosUnaYGanamosTodos " Arrange " | smartmatic todos cambiemos leyendasTodos leyendasPro | leyendasTodos := #('Vamos a volver' 'Justicia social'). leyendasPro := #('No se inunda mas' 'Pop para divertirse'). todos := Partido conNombre: 'Todos' conLeyendas: leyendasTodos. cambiemos := Partido conNombre: 'Cambiemos' conLeyendas: leyendasPro. smartmatic := SmartMatic new. smartmatic agregarPartido: todos; agregarPartido: cambiemos. " Act " smartmatic votar: 'Justicia social'. smartmatic votar: 'Vamos a volver'. smartmatic votar: 'No se inunda mas'. " Assert " self assert: (smartmatic nombrePartidoGanador) equals: 'Todos'.! ! !PruebasSmartMatic methodsFor: 'tests' stamp: 'tomas 9/9/2019 21:05'! test02VotoAPartidoTodosUnaVezYACambiemosDosYPierdeElPueblo " Arrange " | smartmatic todos cambiemos leyendasTodos leyendasPro | leyendasTodos := #('Vamos a volver' 'Justicia social'). leyendasPro := #('No se inunda mas' 'Pop para divertirse'). todos := Partido conNombre: 'Todos' conLeyendas: leyendasTodos. cambiemos := Partido conNombre: 'Cambiemos' conLeyendas: leyendasPro. smartmatic := SmartMatic new. smartmatic agregarPartido: todos; agregarPartido: cambiemos. " Act " smartmatic votar: 'Justicia social'. smartmatic votar: 'Pop para divertirse'. smartmatic votar: 'No se inunda mas'. " Assert " self assert: (smartmatic nombrePartidoGanador) equals: 'Cambiemos'.! !