annotate Agendas/trunk/src/Agendas.Tests/PonentesTests.cs @ 138:62791999ad01

Agregando relación entre Evento y Patrocinador
author nelopauselli
date Thu, 28 Jul 2011 10:13:28 -0300
parents b74734a1a755
children e6e6bfb1da9e
rev   line source
24
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
1 using System;
61
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
2 using System.Collections.Generic;
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
3 using System.Linq;
24
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
4 using AltNetHispano.Agendas.Domain;
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
5 using Moq;
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
6 using NUnit.Framework;
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
7
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
8 namespace AltNetHispano.Agendas.Tests
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
9 {
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
10 [TestFixture]
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
11 public class PonentesTests : TestBase
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
12 {
70
c7264bfc4b71 agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents: 61
diff changeset
13 private const string urlInvitacion = "http://groups.google.com/group/altnet-hispano/browse_thread/thread/65d6d26eb381386e";
c7264bfc4b71 agregado de properties en clase Evento (UrlInvitacion, UrlWiki, NumeroOrden)
jorge.rowies
parents: 61
diff changeset
14
24
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
15 [Test]
54
3059a5f8930f Code cleanup
nelopauselli
parents: 51
diff changeset
16 public void Publicar_dos_eventos_con_el_mismo_ponente_no_registrado()
3059a5f8930f Code cleanup
nelopauselli
parents: 51
diff changeset
17 {
3059a5f8930f Code cleanup
nelopauselli
parents: 51
diff changeset
18 var publicador = new Mock<IPublicador>();
94
db4b1e2cae49 Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents: 87
diff changeset
19 Assert.AreEqual(1, DefaultPersonaRepository.GetAll().Count);
54
3059a5f8930f Code cleanup
nelopauselli
parents: 51
diff changeset
20
138
62791999ad01 Agregando relación entre Evento y Patrocinador
nelopauselli
parents: 118
diff changeset
21 var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
54
3059a5f8930f Code cleanup
nelopauselli
parents: 51
diff changeset
22
106
80c22175c9b5 agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents: 97
diff changeset
23 agenda.Agendar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26),
80c22175c9b5 agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents: 97
diff changeset
24 urlInvitacion, TipoEvento.Van);
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 70
diff changeset
25 agenda.Agendar("Conform - Parte 2", "Fabio Maulo", new DateTime(2011, 3, 5),
106
80c22175c9b5 agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents: 97
diff changeset
26 urlInvitacion, TipoEvento.Van);
54
3059a5f8930f Code cleanup
nelopauselli
parents: 51
diff changeset
27
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
28 var eventos = agenda.GetEventosActivos();
61
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
29 Assert.AreEqual(2, eventos.Count);
54
3059a5f8930f Code cleanup
nelopauselli
parents: 51
diff changeset
30
87
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 75
diff changeset
31 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(2));
54
3059a5f8930f Code cleanup
nelopauselli
parents: 51
diff changeset
32
94
db4b1e2cae49 Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents: 87
diff changeset
33 Assert.AreEqual(2, DefaultPersonaRepository.GetAll().Count);
61
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
34
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
35 var evento = eventos[0];
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
36
97
2434c2323f3d En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents: 95
diff changeset
37 Assert.IsNotNull(evento.Ponente);
54
3059a5f8930f Code cleanup
nelopauselli
parents: 51
diff changeset
38 }
3059a5f8930f Code cleanup
nelopauselli
parents: 51
diff changeset
39
3059a5f8930f Code cleanup
nelopauselli
parents: 51
diff changeset
40 [Test]
51
4a63a73e38e4 Cambio de nombres de test intentando describir mejor lo que verifican
nelopauselli
parents: 50
diff changeset
41 public void Publicar_evento_con_ponente_registrado()
24
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
42 {
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
43 var publicador = new Mock<IPublicador>();
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
44 Evento evento = null;
87
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 75
diff changeset
45 publicador.Setup(p => p.Publicar(It.IsAny<IEnumerable<Track>>())).Callback<IEnumerable<Track>>(
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 75
diff changeset
46 t => evento = t.First().Evento);
24
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
47
138
62791999ad01 Agregando relación entre Evento y Patrocinador
nelopauselli
parents: 118
diff changeset
48 var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
24
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
49
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
50 agenda.RegistrarPonente("Fabio Maulo", "fabiomaulo@gmail.com", "@fabiomaulo", "http://fabiomaulo.blogspot.com");
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
51
106
80c22175c9b5 agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents: 97
diff changeset
52 agenda.Agendar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26), urlInvitacion, TipoEvento.Van);
24
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
53
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
54 Assert.AreEqual(1, agenda.GetEventosActivos().Count);
24
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
55
87
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 75
diff changeset
56 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
24
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
57
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
58 Assert.IsNotNull(evento);
97
2434c2323f3d En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents: 95
diff changeset
59 Assert.AreEqual("Fabio Maulo", evento.Ponente.Nombre);
2434c2323f3d En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents: 95
diff changeset
60 Assert.AreEqual("fabiomaulo@gmail.com", evento.Ponente.Mail);
2434c2323f3d En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents: 95
diff changeset
61 Assert.AreEqual("@fabiomaulo", evento.Ponente.Twitter);
2434c2323f3d En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents: 95
diff changeset
62 Assert.AreEqual("http://fabiomaulo.blogspot.com", evento.Ponente.Blog);
24
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
63 }
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
64
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
65 [Test]
51
4a63a73e38e4 Cambio de nombres de test intentando describir mejor lo que verifican
nelopauselli
parents: 50
diff changeset
66 public void Publicar_evento_sin_ponente_registrado()
24
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
67 {
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
68 var publicador = new Mock<IPublicador>();
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
69 Evento evento = null;
87
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 75
diff changeset
70 publicador.Setup(p => p.Publicar(It.IsAny<IEnumerable<Track>>())).Callback<IEnumerable<Track>>(
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 75
diff changeset
71 t => evento = t.First().Evento);
24
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
72
138
62791999ad01 Agregando relación entre Evento y Patrocinador
nelopauselli
parents: 118
diff changeset
73 var agenda = new Agenda(publicador.Object, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
24
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
74
74
bc46e7426c80 Refactoring de acciones según la definición del diagrama de estados en assembla
nelopauselli
parents: 70
diff changeset
75 agenda.Agendar("Audit (parallel model) con NHibernate 3", "Fabio Maulo", new DateTime(2011, 2, 26),
106
80c22175c9b5 agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents: 97
diff changeset
76 urlInvitacion, TipoEvento.Van);
24
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
77
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
78 Assert.AreEqual(1, agenda.GetEventosActivos().Count);
24
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
79
87
26d0513a8410 A los publicadores les llega la lista de tracks producidos en la acción realizada
nelopauselli
parents: 75
diff changeset
80 publicador.Verify(p => p.Publicar(It.IsAny<IEnumerable<Track>>()), Times.Exactly(1));
24
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
81
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
82 Assert.IsNotNull(evento);
97
2434c2323f3d En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents: 95
diff changeset
83 Assert.AreEqual("Fabio Maulo", evento.Ponente.Nombre);
2434c2323f3d En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents: 95
diff changeset
84 Assert.IsNullOrEmpty(evento.Ponente.Twitter);
24
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
85 }
59
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
86
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
87 [Test]
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
88 public void Quitar_ponente_de_un_evento()
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
89 {
138
62791999ad01 Agregando relación entre Evento y Patrocinador
nelopauselli
parents: 118
diff changeset
90 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
59
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
91
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
92 const string titulo = "Audit (parallel model) con NHibernate 3";
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
93 Guid eventoId;
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
94
106
80c22175c9b5 agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents: 97
diff changeset
95 agenda.Proponer(titulo, "Fabio", urlInvitacion, TipoEvento.Van);
94
db4b1e2cae49 Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents: 87
diff changeset
96 Persona persona;
59
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
97 {
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
98 var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance());
59
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
99 Assert.AreEqual(1, eventos.Count);
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
100
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
101 Evento evento = eventos[0];
97
2434c2323f3d En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents: 95
diff changeset
102 Assert.AreEqual("Fabio", evento.Ponente.Nombre);
59
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
103
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
104 eventoId = evento.Id;
97
2434c2323f3d En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents: 95
diff changeset
105 persona = evento.Ponente;
59
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
106 }
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
107
75
96d7609f2e08 Agendar evento propuesto
nelopauselli
parents: 74
diff changeset
108 agenda.ModificarPropuesta(eventoId, titulo, null, urlInvitacion);
59
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
109 {
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
110 var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance());
59
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
111 Assert.AreEqual(1, eventos.Count);
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
112
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
113 Evento evento = eventos[0];
97
2434c2323f3d En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents: 95
diff changeset
114 Assert.IsNull(evento.Ponente);
59
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
115 }
61
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
116 }
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
117
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
118 [Test]
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
119 public void Cambiar_ponente_de_un_evento()
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
120 {
138
62791999ad01 Agregando relación entre Evento y Patrocinador
nelopauselli
parents: 118
diff changeset
121 var agenda = new Agenda(null, DefaultEventoRepository, DefaultPersonaRepository, DefaultPatrocinadorRepository);
61
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
122
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
123 const string titulo = "Audit (parallel model) con NHibernate 3";
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
124 Guid eventoId;
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
125
106
80c22175c9b5 agregado de tipo de evento (van, cafe, grupoestudio)
jorge.rowies
parents: 97
diff changeset
126 agenda.Proponer(titulo, "Fabio", urlInvitacion, TipoEvento.Van);
61
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
127 {
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
128 var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance());
61
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
129 Assert.AreEqual(1, eventos.Count);
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
130
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
131 Evento evento = eventos[0];
97
2434c2323f3d En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents: 95
diff changeset
132 Assert.AreEqual("Fabio", evento.Ponente.Nombre);
61
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
133
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
134 eventoId = evento.Id;
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
135 }
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
136
75
96d7609f2e08 Agendar evento propuesto
nelopauselli
parents: 74
diff changeset
137 agenda.ModificarPropuesta(eventoId, titulo, "José", urlInvitacion);
61
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
138 {
118
b74734a1a755 Manejo de eventos por estado
Nelo@Kenia.neluz.int
parents: 106
diff changeset
139 var eventos = agenda.GetEventosActivos(EventoPropuestoState.GetInstance());
61
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
140 Assert.AreEqual(1, eventos.Count);
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
141
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
142 Evento evento = eventos[0];
97
2434c2323f3d En el evento, volvemos a llamar Ponente a la persona que está a cargo de la presentación
Nelo@Kenia.neluz.int
parents: 95
diff changeset
143 Assert.IsNotNull(evento.Ponente);
61
cb3f7b47c1f0 Relación de Ponente a Eventos de los que es el ponente.
nelopauselli
parents: 59
diff changeset
144 }
59
4a4e12e32256 Poder quitar un ponente de un evento propuesto
nelopauselli
parents: 54
diff changeset
145 }
24
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
146 }
41b283d27e3e Ponentes como entidad
nelo@MTEySS.neluz.int
parents:
diff changeset
147 }