@@ -39,12 +39,182 @@ void UnitTestReadYaml::executeTest() {
3939 }
4040
4141 compare (" has version" , yaml.getRoot ()->hasElement (" version" ), true );
42- compare (" has volumes" , yaml.getRoot ()->hasElement (" volumes" ), true );
43- compare (" has networks" , yaml.getRoot ()->hasElement (" networks" ), true );
42+ compare (" has version is value" , yaml.getRoot ()->getElement (" version" )->isValue (), true );
43+ compare (" version-value" , yaml.getRoot ()->getElement (" version" )->getValue (), " 3" );
44+
4445 compare (" has services" , yaml.getRoot ()->hasElement (" services" ), true );
46+ compare (" has services is map" , yaml.getRoot ()->getElement (" services" )->isMap (), true );
47+
48+
49+ WsjcppYamlItem *pServices = yaml.getRoot ()->getElement (" services" );
50+
51+ compare (" has services.vote" , pServices->hasElement (" vote" ), true );
52+ compare (" has services.vote is map" , pServices->getElement (" vote" )->isMap (), true );
53+
54+
55+ /*
56+
57+ services:
58+ vote:
59+ build: ./vote
60+ command: python app.py
61+ volumes:
62+ - ./vote:/app
63+ ports:
64+ - "5000:80"
65+ networks:
66+ - front-tier
67+ - back-tier
68+
69+ result:
70+ build: ./result
71+ command: nodemon server.js
72+ volumes:
73+ - ./result:/app
74+ */
75+
76+ // services.result
77+ {
78+ compare (" has services.result" , pServices->hasElement (" result" ), true );
79+ compare (" services.result is map" , pServices->getElement (" result" )->isMap (), true );
80+ compare (" services.result keys size 5" , pServices->getElement (" result" )->getKeys ().size (), 5 );
81+
82+ WsjcppYamlItem *pResult = pServices->getElement (" result" );
83+
84+ WsjcppYamlItem *pResultVolumes = pResult->getElement (" volumes" );
85+ compare (" services.result.volumes is array" , pResultVolumes->isArray (), true );
86+ compare (" services.result.volumes size 1" , pResultVolumes->getLength (), 1 );
87+ compare (" services.result.volumes val 0" , pResultVolumes->getElement (0 )->getValue (), " ./result:/app" );
88+
89+ WsjcppYamlItem *pResultPorts = pResult->getElement (" ports" );
90+ compare (" services.result.ports is array" , pResultPorts->isArray (), true );
91+ compare (" services.result.ports size 2" , pResultPorts->getLength (), 2 );
92+ compare (" services.result.ports val 0" , pResultPorts->getElement (0 )->getValue (), " 5001:80" );
93+ compare (" services.result.ports val 1" , pResultPorts->getElement (1 )->getValue (), " 5858:5858" );
94+
95+ WsjcppYamlItem *pResultNetworks = pResult->getElement (" networks" );
96+ compare (" services.result.networks size 2" , pResultNetworks->getLength (), 2 );
97+ compare (" services.result.networks val 0" , pResultNetworks->getElement (0 )->getValue (), " front-tier" );
98+ compare (" services.result.networks val 1" , pResultNetworks->getElement (1 )->getValue (), " back-tier" );
99+ }
45100
46- compare (" version-value" , yaml.getRoot ()->getElement (" version" )->getValue (), " 3" );
101+ // services.worker
102+ {
103+ compare (" has services.worker" , pServices->hasElement (" worker" ), true );
104+ compare (" has services.worker is map" , pServices->getElement (" worker" )->isMap (), true );
105+ compare (" services.worker keys size 3" , pServices->getElement (" worker" )->getKeys ().size (), 3 );
106+ WsjcppYamlItem *pWorker = pServices->getElement (" worker" );
107+
108+ compare (" has services.worker.build" , pWorker->hasElement (" build" ), true );
109+
110+ compare (" has services.worker.depends_on" , pWorker->hasElement (" depends_on" ), true );
111+ compare (" has services.worker.networks" , pWorker->hasElement (" networks" ), true );
112+
113+ WsjcppYamlItem *pWorkerBuild = pWorker->getElement (" build" );
114+ compare (" services.worker.build is map" , pWorkerBuild->isMap (), true );
115+ compare (" has services.worker.build.context" , pWorkerBuild->hasElement (" context" ), true );
116+ compare (" services.worker.build.context val" , pWorkerBuild->getElement (" context" )->getValue (), " ./worker" );
117+
118+ WsjcppYamlItem *pWorkerDependsOn = pWorker->getElement (" depends_on" );
119+ compare (" has services.worker.depends_on" , pWorkerDependsOn->isArray (), true );
120+ compare (" services.worker.depends_on size 2" , pWorkerDependsOn->getLength (), 2 );
121+ compare (" services.worker.depends_on val 0" , pWorkerDependsOn->getElement (0 )->getValue (), " redis" );
122+ compare (" services.worker.depends_on val 1" , pWorkerDependsOn->getElement (1 )->getValue (), " db" );
123+
124+ WsjcppYamlItem *pWorkerNetworks = pWorker->getElement (" networks" );
125+ compare (" services.worker.networks size 1" , pWorkerNetworks->getLength (), 1 );
126+ compare (" services.worker.networks val 0" , pWorkerNetworks->getElement (0 )->getValue (), " back-tier" );
127+ }
128+
129+ // services.redis
130+ {
131+ compare (" has services.redis" , pServices->hasElement (" redis" ), true );
132+ compare (" services.redis is map" , pServices->getElement (" redis" )->isMap (), true );
133+ compare (" services.redis keys size 4" , pServices->getElement (" redis" )->getKeys ().size (), 4 );
134+
135+ WsjcppYamlItem *pRedis = pServices->getElement (" redis" );
136+ compare (" has services.redis.image" , pRedis->hasElement (" image" ), true );
137+ compare (" has services.redis.container_name" , pRedis->hasElement (" container_name" ), true );
138+ compare (" has services.redis.ports" , pRedis->hasElement (" ports" ), true );
139+ compare (" has services.redis.networks" , pRedis->hasElement (" networks" ), true );
140+
141+ compare (" services.redis.image value" , pRedis->getElement (" image" )->getValue (), " redis:alpine" );
142+ compare (" services.redis.container_name" , pRedis->getElement (" container_name" )->getValue (), " redis" );
143+
144+ WsjcppYamlItem *pRedisPorts = pRedis->getElement (" ports" );
145+ // TODO bug #17
146+ compare (" services.redis.ports is value" , pRedisPorts->isValue (), true );
147+ compare (" services.redis.ports value" , pRedisPorts->getValue (), " [\" 6379\" ]" );
148+
149+ WsjcppYamlItem *pRedisNetworks = pRedis->getElement (" networks" );
150+ compare (" services.redis.networks size 1" , pRedisNetworks->getLength (), 1 );
151+ compare (" services.redis.networks val 0" , pRedisNetworks->getElement (0 )->getValue (), " back-tier" );
152+ }
153+
154+ // services.db
155+ {
156+ compare (" has services.db" , pServices->hasElement (" db" ), true );
157+ compare (" has services.db is map" , pServices->getElement (" db" )->isMap (), true );
158+ compare (" services.db keys size 5" , pServices->getElement (" db" )->getKeys ().size (), 5 );
159+
160+ WsjcppYamlItem *pServicesDb = pServices->getElement (" db" );
161+
162+ compare (" has services.db.image" , pServicesDb->hasElement (" image" ), true );
163+ compare (" services.db.image value" , pServicesDb->getElement (" image" )->getValue (), " postgres:9.4" );
164+ compare (" services.db.container_name" , pServicesDb->getElement (" container_name" )->getValue (), " db" );
165+
166+ compare (" has services.db.environment" , pServicesDb->hasElement (" environment" ), true );
167+ compare (" services.db.environment is map" , pServicesDb->getElement (" environment" )->isMap (), true );
168+
169+ WsjcppYamlItem *pDbEnvironment = pServicesDb->getElement (" environment" );
170+
171+ compare (" has services.db.environment.POSTGRES_USER" , pDbEnvironment->hasElement (" POSTGRES_USER" ), true );
172+ compare (" services.db.environment.POSTGRES_USER" , pDbEnvironment->getElement (" POSTGRES_USER" )->getValue (), " postgres" );
47173
174+ compare (" has services.db.environment.POSTGRES_PASSWORD" , pDbEnvironment->hasElement (" POSTGRES_PASSWORD" ), true );
175+ compare (" services.db.environment.POSTGRES_PASSWORD" , pDbEnvironment->getElement (" POSTGRES_PASSWORD" )->getValue (), " postgres" );
176+
177+ compare (" has services.db.volumes" , pServicesDb->hasElement (" volumes" ), true );
178+ compare (" services.db.volumes is array" , pServicesDb->getElement (" volumes" )->isArray (), true );
179+
180+ WsjcppYamlItem *pDbVolumes = pServicesDb->getElement (" volumes" );
181+ compare (" services.db.volumes size 1" , pDbVolumes->getLength (), 1 );
182+ compare (" services.db.volumes val 0" , pDbVolumes->getElement (0 )->getValue (), " db-data:/var/lib/postgresql/data" );
183+
184+ compare (" has services.db.networks" , pServicesDb->hasElement (" networks" ), true );
185+ compare (" services.db.networks is array" , pServicesDb->getElement (" networks" )->isArray (), true );
186+
187+ WsjcppYamlItem *pDbNetworks = pServicesDb->getElement (" networks" );
188+ compare (" services.db.networks size 1" , pDbNetworks->getLength (), 1 );
189+ compare (" services.db.networks val 0" , pDbNetworks->getElement (0 )->getValue (), " back-tier" );
190+ }
191+
192+ // volumes
193+ {
194+ compare (" has volumes" , yaml.getRoot ()->hasElement (" volumes" ), true );
195+ compare (" has volumes is map" , yaml.getRoot ()->getElement (" volumes" )->isMap (), true );
196+
197+ WsjcppYamlItem *pVolumes = yaml.getRoot ()->getElement (" volumes" );
198+
199+ compare (" has volumes.db-data" , pVolumes->hasElement (" db-data" ), true );
200+ compare (" has volumes.db-data is undefined" , pVolumes->getElement (" db-data" )->isUndefined (), true );
201+ compare (" has volumes keys size 1" , pVolumes->getKeys ().size (), 1 );
202+ }
203+
204+ // networks
205+ {
206+ compare (" has networks" , yaml.getRoot ()->hasElement (" networks" ), true );
207+ compare (" has networks is map" , yaml.getRoot ()->getElement (" networks" )->isMap (), true );
208+
209+ WsjcppYamlItem *pNeworks = yaml.getRoot ()->getElement (" networks" );
210+ compare (" has networks keys size 2" , pNeworks->getKeys ().size (), 2 );
211+
212+ compare (" has networks.front-tier" , pNeworks->hasElement (" front-tier" ), true );
213+ compare (" has networks.front-tier is undefined" , pNeworks->getElement (" front-tier" )->isUndefined (), true );
214+
215+ compare (" has networks.back-tier" , pNeworks->hasElement (" back-tier" ), true );
216+ compare (" has networks.back-tier is undefined" , pNeworks->getElement (" back-tier" )->isUndefined (), true );
217+ }
48218}
49219
50220// ---------------------------------------------------------------------
0 commit comments