-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathP3-Topografia.st
359 lines (288 loc) · 10.1 KB
/
P3-Topografia.st
1
Object subclass: #ImpresorDeTopografia instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Topografia-Practica3'!TestCase subclass: #TestTopografia instanceVariableNames: 'topografia topografiaGrande' classVariableNames: '' poolDictionaries: '' category: 'Topografia-Practica3'!!TestTopografia methodsFor: 'initialization' stamp: 'ema 4/15/2018 04:29'!testDiferenteTopografia" En este caso se crea una topografia que tenga diferente la porcion2 y se comprueba que #esIgualA: devuelva falso" | topografiaDiferente porcion1 porcion2 porcion3 porcion4 | porcion1 := Tierra new. porcion2 := Tierra new. porcion3 := Agua new. porcion4 := Tierra new. topografiaDiferente := Mixta newP1: porcion1 P2: porcion2 P3: porcion3 P4: porcion4. self assert: (topografia esIgualA: topografiaDiferente) = false! !!TestTopografia methodsFor: 'initialization' stamp: 'ema 4/13/2018 13:25'!testProporcionDeTierra self assert: topografia proporcionDeTierra = (1 / 2)! !!TestTopografia methodsFor: 'initialization' stamp: 'ema 4/15/2018 04:29'!testIgualTopografia | topografiaIgual porcion1 porcion2 porcion3 porcion4 | porcion1 := Agua new. porcion2 := Tierra new. porcion3 := Agua new. porcion4 := Tierra new. topografiaIgual := Mixta newP1: porcion1 P2: porcion2 P3: porcion3 P4: porcion4. self assert: (topografia esIgualA: topografiaIgual) = true! !!TestTopografia methodsFor: 'initialization' stamp: 'ema 4/18/2018 16:54'!testPrintOn| stream contenido |contenido := 'Mixta ( Agua Tierra Agua Mixta ( Agua Tierra Agua Tierra ))'.stream := ReadWriteStream on: String new.topografiaGrande printOn: stream.self assert: stream contents = contenido.! !!TestTopografia methodsFor: 'initialization' stamp: 'ema 4/13/2018 13:25'!testProporcionDeAgua self assert: topografia proporcionDeAgua = (1 / 2)! !!TestTopografia methodsFor: 'initialization' stamp: 'ema 4/19/2018 07:52'!testPrintJSONOn | stream contenido | contenido := '{"Mixta":[ "Agua", "Tierra", "Agua", { "Mixta":[ "Agua", "Tierra", "Agua", "Tierra" ] } ]}'. stream := ReadWriteStream on: String new. topografiaGrande printJSONOn: stream. self assert: stream contents = contenido! !!TestTopografia methodsFor: 'initialization' stamp: 'ema 4/18/2018 16:51'!setUp | porcion1 porcion2 porcion3 porcion4 | porcion1 := Agua new. porcion2 := Tierra new. porcion3 := Agua new. porcion4 := Tierra new. topografia := Mixta newP1: porcion1 P2: porcion2 P3: porcion3 P4: porcion4. topografiaGrande := Mixta newP1: Agua new P2: Tierra new P3: Agua new P4: topografia. ! !Object subclass: #Topografia instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Topografia-Practica3'!!Topografia methodsFor: 'printing' stamp: 'ema 4/15/2018 12:06'!printOn: aStream self printOn: aStream indentation: 0! !!Topografia methodsFor: 'printing' stamp: 'ema 4/19/2018 07:36'!printJSONOn: aStream self printJSONOn: aStream indentation: 0.! !!Topografia methodsFor: 'accessing' stamp: 'ema 4/18/2018 17:26'!printJSONOn: arg1 indentation: arg2 ^ self subclassResponsibility! !!Topografia methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 11:40'!esIgualAAgua ^ SubclassResponsibility! !!Topografia methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 11:38'!proporcionDeAgua ^ SubclassResponsibility ! !!Topografia methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 11:39'!proporcionDeTierra ^ SubclassResponsibility! !!Topografia methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 11:42'!esIgualAMixta: utraTopografia ^ SubclassResponsibility! !!Topografia methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 11:39'!esIgualA: otraTopografia ^ SubclassResponsibility! !!Topografia methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 11:40'!esIgualATierra ^ SubclassResponsibility! !Topografia subclass: #Agua instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Topografia-Practica3'!!Agua methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 11:57'!esIgualAAgua ^ true! !!Agua methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 11:54'!proporcionDeAgua ^ 1! !!Agua methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 11:54'!proporcionDeTierra ^ 0! !!Agua methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 12:01'!esIgualAMixta: otraTopografia ^ false! !!Agua methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 11:55'!esIgualA: unaTopografia ^ unaTopografia esIgualAAgua! !!Agua methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 11:58'!esIgualATierra ^ false! !!Agua methodsFor: 'printing' stamp: 'ema 4/15/2018 04:32'!printOn: aStream indentation: spacesspaces timesRepeat: [ aStream nextPut: Character space ].aStream nextPutAll: 'Agua'.aStream nextPut: Character cr.! !!Agua methodsFor: 'printing' stamp: 'ema 4/17/2018 10:32'!printJSONOn: aStream indentation: spaces spaces timesRepeat: [ aStream nextPut: Character space ]. aStream nextPutAll: '"Agua"'.! !Topografia subclass: #Mixta instanceVariableNames: 'topografias' classVariableNames: '' poolDictionaries: '' category: 'Topografia-Practica3'!!Mixta methodsFor: 'accessing' stamp: 'ema 4/13/2018 12:13'!topografias ^ topografias! !!Mixta methodsFor: 'printing' stamp: 'ema 4/21/2018 12:01'!printOn: aStream indentation: spaces " self agregarRaiz: aStream indent: spaces " spaces timesRepeat: [ aStream nextPut: Character space ]. aStream nextPutAll: 'Mixta ('. " self agregarSubtopografias: aStream indent: spaces " aStream nextPut: Character cr. self topografias do: [ :each | each printOn: aStream indentation: spaces + 4 ]. " self cerrarRaiz: aStream indent: spaces " 1 to: spaces do: [ :i | aStream nextPut: Character space ]. aStream nextPutAll: ')'. aStream nextPut: Character cr! !!Mixta methodsFor: 'printing' stamp: 'ema 4/21/2018 12:01'!printJSONOn: aStream indentation: spaces " self abrirLlave: aStream indent: spaces " spaces timesRepeat: [ aStream nextPut: Character space ]. aStream nextPutAll: '{'. " self agregarRaiz: aStream indent: spaces " aStream nextPut: Character cr. spaces timesRepeat: [ aStream nextPut: Character space ]. aStream nextPutAll: '"Mixta":['. " self agregarSubdtopografias: aStream indent: spaces " aStream nextPut: Character cr. 1 to: topografias size - 1 do: [ :each | (topografias at: each) printJSONOn: aStream indentation: spaces + 4. aStream nextPutAll: ','; nextPut: Character cr ]. (topografias at: topografias size) printJSONOn: aStream indentation: spaces + 4. " self cerrarRaiz: aStream indent: spaces " aStream nextPut: Character cr. spaces + 4 timesRepeat: [ aStream nextPut: Character space ]. aStream nextPutAll: ']'. " self cerrarLlave: aStream indent: spaces " aStream nextPut: Character cr. spaces timesRepeat: [ aStream nextPut: Character space ]. aStream nextPutAll: '}'! !!Mixta methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 12:00'!esIgualAAgua ^ false! !!Mixta methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 13:00'!proporcionDeAgua "Suma las proporciones de agua de todas sus topografias y las divide por la cantidad de topografias que la forman (4 de momento)" ^ (topografias inject: 0 into: [ :proporcionDeAguaTotal :unaTopografia | proporcionDeAguaTotal + unaTopografia proporcionDeAgua ]) / topografias size! !!Mixta methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 13:00'!proporcionDeTierra "Suma las proporciones de tierra de todas sus topografias y las divide por la cantidad de topografias que la forman (4 de momento)" ^ (topografias inject: 0 into: [ :proporcionDeTierraTotal :unaTopografia | proporcionDeTierraTotal + unaTopografia proporcionDeTierra ]) / topografias size! !!Mixta methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 13:04'!esIgualAMixta: otraTopografia" devuelve true si de 1 a 4 todas las topografias son iguales " ^ (1 to: self topografias size) allSatisfy: [ :i | (self topografias at: i) esIgualA: (otraTopografia topografias at: i) ]! !!Mixta methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 12:00'!esIgualA: unaTopografia ^ unaTopografia esIgualAMixta: self! !!Mixta methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 12:02'!esIgualATierra ^ false! !!Mixta methodsFor: 'initialization' stamp: 'ema 4/13/2018 12:38'!initialize: vectorDeTopografias super initialize. topografias := vectorDeTopografias.! !"-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!Mixta class instanceVariableNames: ''!!Mixta class methodsFor: 'instance creation' stamp: 'ema 4/15/2018 04:29'!newP1: topografia1 P2: topografia2 P3: topografia3 P4: topografia4 | array | array := Array new: 4. array at: 1 put: topografia1. array at: 2 put: topografia2. array at: 3 put: topografia3. array at: 4 put: topografia4. ^ Mixta new initialize: array! !Topografia subclass: #Tierra instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'Topografia-Practica3'!!Tierra methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 11:59'!esIgualAAgua ^ false! !!Tierra methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 11:59'!proporcionDeAgua ^ 0! !!Tierra methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 11:59'!proporcionDeTierra ^ 1! !!Tierra methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 12:01'!esIgualAMixta: otraTopografia ^ false! !!Tierra methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 11:59'!esIgualA: unaTopografia ^ unaTopografia esIgualATierra! !!Tierra methodsFor: 'as yet unclassified' stamp: 'ema 4/13/2018 11:59'!esIgualATierra ^ true! !!Tierra methodsFor: 'printing' stamp: 'ema 4/15/2018 04:32'!printOn: aStream indentation: spacesspaces timesRepeat: [ aStream nextPut: Character space ].aStream nextPutAll: 'Tierra'.aStream nextPut: Character cr.! !!Tierra methodsFor: 'printing' stamp: 'ema 4/17/2018 10:32'!printJSONOn: aStream indentation: spaces spaces timesRepeat: [ aStream nextPut: Character space ]. aStream nextPutAll: '"Tierra"'.! !