[java/algo] Concours - implémenter une itf simple de gestion d'agenda.

Concours - implémenter une itf simple de gestion d'agenda. [java/algo] - Java - Programmation

Marsh Posté le 04-01-2004 à 03:31:27    

Hello les gens,
 
Topic concept, inspiré en partie par les concours des grapheux, et par un petit problème qui m'est tombé dessus lorsque j'ai voulu commencer un simple petit projet.
 
Pré-requis:
 - un minimum de connaissance de Java et de la poo en général
 - junit (http://www.junit.org, peut s'apprendre sur le tas en 5 minutes)
 
Le principe:
Je fournis les éléments suivants:
 - une interface à implémenter
 - un ou des testcases à passer
 Bien entendu, si le concept fonctionne, j'espère ne pas être le seul à proposer des concours
 
Les participants du concours doivent donc, au minimum, implémenter cette interface de manière à ce que les tests soient positifs.
 
Chaque forumeur pourra "voter" pour 5 participations (en esperant qu'il y en ait assez), en fonction des critère de vote qui lui semblent importants. (voir ci-dessous)
 
Critères de vote:
 - lisibilité du code
 - élégande du code, des concepts, du design
 - performance
 - ...
 
Votes:
Si le temps le permet, ou si une bonne âme se dévoue, une interface ouaibe sera proposée pour recueiller les votes. Sinon, on fera comme les grapheux, à la mimine [:nofret]
 
Participation:
Ha! Évidemment! Comment qu'on participe moins moins!?
Bien, c'est là dessus que je buche depuis quelque jours. Maintenant j'ai un système entièrement automatisé qui marche. Du moins je crois.
Le principe est simple:
 - on uploade son archive de participation sur un formulaire qui se trouve ici:  
http://rien.a.dire.free.fr/concours_java_1/upload/, en remplissant quelques champs (votre nom et le nom de la classe principale en "fully qualified", c-à-d nom de package inclus, par example "fr.hardware.forum.concoursjava.MyAgenda" )
 - toutes les 8 heures, le serveur analyse les archives, compile, lance les tests et génère un rapport pour chacune des participations, ici:
http://rien.a.dire.free.fr/concour [...] atest.html
 
Critères de validité:
Vous devez fournir votre participation sous la forme d'une archive tgz ou zip, contenant uniquement les sources.
Pour chaque concours, un nombre maximal de fichiers par archive, et une taille maximale d'archive est déterminé.
A la racine de votre archive doit se trouve votre package "root", c-a-d si vous travaillez dans le package com.pouet.machin, le premier niveau de l'archive doit comporter "com", pas de sous-repertoire "src" ou autre, sans quoi l'archive sera rejetée par le système. Si ceci s'averait etre une contrainte pour beaucoup d'entre vous, je pourrais toutefois adapter le système;)
 
Les licenses restrictives sur vos sources ne seront pas acceptées. Les licenses "classiques" du logiciel libre et open-source seront bien entendu acceptées, à condition qu'elles n'entrent pas en conflit avec les sources du concours lui-même.
 
edit du 1/2/2005 : phrase corrigée


Message édité par the real moins moins le 01-02-2005 à 01:28:43

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 04-01-2004 à 03:31:27   

Reply

Marsh Posté le 04-01-2004 à 03:31:51    

[ 1er concours proposé : implémentation d'une interface simple de gestion d'agenda ]
 
L'interface à implementer: Planning. L'idée de base est de pouvoir y gérer une liste de Period qui ne se recoupent pas, une Period représentant une periode/plage de temps d'activité déterminée par une Date de début, de fin, et une description.
 
Pour que les interessés puissent se mettre au boulot, voici les sources de l'interface à implémenter:
http://rien.a.dire.free.fr/concour [...] nning.html
 
Et le TestCase à faire passer:
http://rien.a.dire.free.fr/concour [...] tCase.html
 
Sources à télécharger:
http://rien.a.dire.free.fr/concour [...] _1-src.zip
 
Autres sources intéressantes à voir dans le répertoire:
http://rien.a.dire.free.fr/concours_java_1/
 
Quelques explications:
OverlapingPlanning: un exemple d'implementation de Planning, mais qui ne passe pas le test "testOverlap": c'est là que se trouve la majeure partie du défi (du moins j'espere, sinon va etre vite torché le concours), le but étant de gérer, d'empecher le fait que l'on ajoute plusieurs Period qui se chevauchent sur un meme Planning.
 
PlanningContestTestCase: c'est le TestCase à passer. Pour vous tests "à la maison", modifiez-les lignes 30 & 56 pour qu'elles retournent une nouvelle instance de votre implémentation. (ContestTestSuite.getInstance() renvoie une instance de l'implémentation en cours de test dans le système de gestion du concours). Faites le aussi étendre junit.framework.TestCase, simplement, au lieu de ContestTestCase, il s'agit aussi d'une astuce spécifique au framework que j'ai fait pour le concours.
(On pourra peut etre trouver quelque chose de plus convenant à l'avenir mais bon)
 
Concernant l'interface Period: réimplémentez-là à votre guise, ou utilisez BasicPeriod si celle-ci vous convient.
 
 
Il se peut que de nouveaux tests viennent s'ajouter aux deux présents actuellement, et peut etre même un petit test de performance, si l'inspiration est au rendez-vous.
 
 
A vos claviers!
 
ps: si la doc n'était pas suffisament complète ou que vous aviez des questions, n'hésitez surtout pas.


Message édité par the real moins moins le 06-01-2004 à 00:26:29

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 04-01-2004 à 07:32:32    

tiens, j'ai trouvé un truc marrant pour pour faire le test !


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 04-01-2004 à 08:43:47    

-- > pourquoi le TestCase il dérive de ContestTestCase ? c'est une classe à toi ça non ? on peut pas utiliser JUnit sans modifier le test alors.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 04-01-2004 à 13:01:43    

[:blueflag]

Reply

Marsh Posté le 04-01-2004 à 13:19:45    

[:blueflag]aussi, mais je doute d'avoir le temps.

Reply

Marsh Posté le 04-01-2004 à 14:47:38    

nraynaud a écrit :

-- > pourquoi le TestCase il dérive de ContestTestCase ? c'est une classe à toi ça non ? on peut pas utiliser JUnit sans modifier le test alors.

ben oui, comme je l'ai écrit. y'a qu'a modifier l'extends et les lignes 30 & 56 (puisque de ttes façons, à moins d'imposer un nom pour l'implémentation, je ne peux pas deviner le nom de la classe à instancier dans le test)


Message édité par the real moins moins le 04-01-2004 à 14:49:02

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 04-01-2004 à 16:28:11    

Voilà, j'ai bougé le tout sur free, plus de pubs et le css est respecté.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 04-01-2004 à 21:24:21    

the real moins moins a écrit :

ben oui, comme je l'ai écrit. y'a qu'a modifier l'extends et les lignes 30 & 56 (puisque de ttes façons, à moins d'imposer un nom pour l'implémentation, je ne peux pas deviner le nom de la classe à instancier dans le test)

Ben tu imposes le nom d'une factory ?
paske là, c'est nous qui ne pouveons pas utiliser les tests. J'ai fait du copier-coller vers ma propre classe.


Message édité par nraynaud le 04-01-2004 à 21:39:31

---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 04-01-2004 à 21:33:07    

nraynaud a écrit :

Ben tu imposes le nom d'une factory ?
paske là, c'est nous qui ne pouveons pas utiliser les tests. V'est fait du copier-coller vers ma propre classe.

certes, il faudrait une solution plus adéquate.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 04-01-2004 à 21:33:07   

Reply

Marsh Posté le 05-01-2004 à 02:09:51    

Ayé, on peut uploader.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 05-01-2004 à 02:33:35    

bon, 'faut que je me grouille de débugger alors.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 05-01-2004 à 02:54:19    

[:antp] putain, mais testOverlap et testBoundaries ne sont pas compatibles !
[:harkott] http://www.bondagecbt.com/graphics/page_r2_c09.jpg
 
je pouvais toujours essayer de vérifier mon getPeriods() avec ça !!!


Message édité par nraynaud le 05-01-2004 à 03:09:02

---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 05-01-2004 à 03:10:46    

pas compatibles? plait-il?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 05-01-2004 à 03:47:07    

si testOverlap passe alors testBoundaries echoue (enfin, en considérant que le comportement du reste est normal).
 

Code :
  1. 53       public void testBoundaries() throws Exception {
  2. 54           long now = System.currentTimeMillis();
  3. 55   
  4. 56           Planning cal = (Planning) ContestTestSuite.getInstance();
  5. 57           cal.addPeriod(new Date(now-twohours), new Date(now-hour));
  6. 58           cal.addPeriod(new Date(now-hour-halfhour), new Date(now-halfhour));
  7. //n'a pa été inséré
  8. 59           cal.addPeriod(new Date(now-halfhour), new Date(now+halfhour));
  9. 60           cal.addPeriod(new Date(now), new Date(now+hour));
  10. // n'a pa été inséré
  11. 61           cal.addPeriod(new Date(now+halfhour), new Date(now+hour+halfhour));
  12. 62           cal.addPeriod(new Date(now+hour), new Date(now+twohours));
  13. // n'a pa été inséré
  14. 63           cal.addPeriod(new Date(now+hour+fifteen), new Date(now+twohours+halfhour));
  15. // n'a pa été inséré


donc forcément, les nombres calculés avec overlapping sont faux.
 
 
 
sinon, rien à voir, mais pour que les tests soient plus faciles à lire, j'ai fait un truc comme ça :

Code :
  1. long now = System.currentTimeMillis();
  2.  long minute = 1000 * 60;
  3.  Planning cal = new NoOverlapPlanning();
  4.  Date d0 = new Date(now + 0 * minute);
  5.  Date d1 = new Date(now + 1 * minute);
  6.  Date d2 = new Date(now + 2 * minute);
  7.  Date d3 = new Date(now + 3 * minute);
  8.  Date d4 = new Date(now + 4 * minute);
  9.  Date d5 = new Date(now + 5 * minute);
  10.  Date d6 = new Date(now + 6 * minute);
  11.  Date d7 = new Date(now + 7 * minute);
  12.  Date d8 = new Date(now + 8 * minute);
  13.  Date d9 = new Date(now + 9 * minute);
  14.  Date d10 = new Date(now + 10 * minute);
  15.  Period p1to2 = cal.addPeriod(d1, d2);
  16.  Period p3to4 = cal.addPeriod(d3, d4);
  17.  Period p5to6 = cal.addPeriod(d5, d6);
  18.  Period p7to8 = cal.addPeriod(d7, d8);
  19.  Period p9to10 = cal.addPeriod(d9, d10);


 
ce qui permet de lire l'ordre des dates et la tronche des périodes au premier coup d'oeuil.


Message édité par nraynaud le 05-01-2004 à 03:48:41

---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 05-01-2004 à 03:55:37    

nraynaud a écrit :


si testOverlap passe alors testBoundaries echoue (enfin, en considérant que le comportement du reste est normal).


ha ouais putain merde!!!  
pas fait gaffe à ça moi! Au début j'avais ce test qui tournait pour mon OverlappingPlanning et je l'ai remis là comme un con :D
 
 

nraynaud a écrit :


sinon, rien à voir, mais pour que les tests soient plus faciles à lire, j'ai fait un truc comme ça :
ce qui permet de lire l'ordre des dates et la tronche des périodes au premier coup d'oeuil.


bien vu :jap:
 
si t'as une classe de TestCase à jour qui est plus correcte, on peut la changer :)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 05-01-2004 à 03:57:49    

attention à tenir compte du fait que getPeriods doit retourner une Period meme si elle n'est pas intégralement dans l'intervalle donné (ie si elle commence avant la fin de l'intervalle mais termine apres, elle doit etre retournée, ainsi que si elle commence avant l'intervalle mais se termine dans ou apres l'intervalle)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 05-01-2004 à 04:01:55    

the real moins moins a écrit :


ha ouais putain merde!!!  
pas fait gaffe à ça moi! Au début j'avais ce test qui tournait pour mon OverlappingPlanning et je l'ai remis là comme un con :D
 
 
 
bien vu :jap:
 
si t'as une classe de TestCase à jour qui est plus correcte, on peut la changer :)


heu non, pas encore (je les écris et debugge au fil de l'eau). D'autre part, j'en ferais une un peu "strippée" car certains tests donnent des indications sur l'implémentation (car leur écriture est guidée par la couverture de code).
 
juste un petit bout :

Code :
  1. public void testGetPeriods() {
  2.  long now = System.currentTimeMillis();
  3.  long minute = 1000 * 60;
  4.  Planning cal = new NoOverlapPlanning();
  5.  Date d0 = new Date(now + 0 * minute);
  6.  Date d1 = new Date(now + 1 * minute);
  7.  Date d2 = new Date(now + 2 * minute);
  8.  Date d3 = new Date(now + 3 * minute);
  9.  Date d4 = new Date(now + 4 * minute);
  10.  Date d5 = new Date(now + 5 * minute);
  11.  Date d6 = new Date(now + 6 * minute);
  12.  Date d7 = new Date(now + 7 * minute);
  13.  Date d8 = new Date(now + 8 * minute);
  14.  Date d9 = new Date(now + 9 * minute);
  15.  Date d10 = new Date(now + 10 * minute);
  16.  Period p1to2 = cal.addPeriod(d1, d2);
  17.  Period p3to4 = cal.addPeriod(d3, d4);
  18.  Period p5to6 = cal.addPeriod(d5, d6);
  19.  Period p7to8 = cal.addPeriod(d7, d8);
  20.  Period p9to10 = cal.addPeriod(d9, d10);
  21.  // arguement checking
  22.  try {
  23.   cal.getPeriods(d3, d1);
  24.   fail();
  25.  }catch (IllegalArgumentException e) {
  26.  }
  27.  // simple inteval test
  28.  Collection c = cal.getPeriods(d3, d7);
  29.  Iterator i = c.iterator();
  30.  assertTrue(i.hasNext());
  31.  assertEquals(i.next(), p3to4);
  32.  assertTrue(i.hasNext());
  33.  assertEquals(i.next(), p5to6);
  34.  assertFalse(i.hasNext());
  35. }


Message édité par nraynaud le 05-01-2004 à 04:27:25

---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 05-01-2004 à 04:02:54    

the real moins moins a écrit :

attention à tenir compte du fait que getPeriods doit retourner une Period meme si elle n'est pas intégralement dans l'intervalle donné (ie si elle commence avant la fin de l'intervalle mais termine apres, elle doit etre retournée, ainsi que si elle commence avant l'intervalle mais se termine dans ou apres l'intervalle)

oué, je teste pas encore ça, d'où mes intervalles qui permettent pas de le faire.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 05-01-2004 à 04:04:13    

bien vu!
 
bon, je verrai peut etre ça demain. J'espère que d'autres montreront un peu d'interet !
 
merci en tous cas.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 05-01-2004 à 06:06:33    

bwalé, je suis sympa :

Code :
  1. /*
  2. * Created on 4 janv. 04 by nraynaud
  3. *  
  4. * This code is subject to the GNU GENERAL PUBLIC LICENSE.
  5. */
  6. package org.nraynaud.planning;
  7. import java.util.Collection;
  8. import java.util.Date;
  9. import java.util.Iterator;
  10. import org.hansel.AssertionCoverageDecorator;
  11. import net.incongru.planning.Period;
  12. import net.incongru.planning.Planning;
  13. import junit.framework.Test;
  14. import junit.framework.TestCase;
  15. /**
  16. *  
  17. * @author nraynaud
  18. */
  19. public class SimplePeriodTest extends TestCase {
  20. private static final long hour = 1000 * 60 * 60;
  21. private static final long twohours = hour * 2;
  22. private static final long halfhour = hour / 2;
  23. private static final long fifteen = hour / 4;
  24. long now = System.currentTimeMillis();
  25. long minute = 1000 * 60;
  26. Date d0 = new Date(now + 0 * minute);
  27. Date d1 = new Date(now + 1 * minute);
  28. Date d2 = new Date(now + 2 * minute);
  29. Date d3 = new Date(now + 3 * minute);
  30. Date d4 = new Date(now + 4 * minute);
  31. Date d5 = new Date(now + 5 * minute);
  32. Date d6 = new Date(now + 6 * minute);
  33. Date d7 = new Date(now + 7 * minute);
  34. Date d8 = new Date(now + 8 * minute);
  35. Date d9 = new Date(now + 9 * minute);
  36. Date d10 = new Date(now + 10 * minute);
  37. Date d11 = new Date(now + 11 * minute);
  38. Date d12 = new Date(now + 12 * minute);
  39. /**
  40.  * Tests for Planning implementations that don't allow overlapping periods.
  41.  */
  42. public void testOverlap() throws Exception {
  43.  long now = System.currentTimeMillis();
  44.  Planning cal = new NoOverlapPlanning();
  45.  cal.addPeriod(new Date(now - hour), new Date(now + hour));
  46.  Period q = cal.addPeriod(new Date(now + halfhour), new Date(now + twohours));
  47.  assertNull("adding an overlapping period should fail", q);
  48.  q = cal.addPeriod(new Date(now - fifteen), new Date(now + fifteen));
  49.  assertNull("adding an overlapping period should fail", q);
  50.  q = cal.addPeriod(new Date(now - twohours), new Date(now + twohours));
  51.  assertNull("adding an overlapping period should fail", q);
  52.  q = cal.addPeriod(new Date(now - hour), new Date(now + hour));
  53.  assertNull("adding an overlapping period should fail", q);
  54.  q = cal.addPeriod(new Date(now - twohours), new Date(now));
  55.  assertNull("adding an overlapping period should fail", q);
  56. }
  57. public void testAddPeriod() {
  58.  Planning cal = new NoOverlapPlanning();
  59.  assertNotNull(cal.addPeriod(d1, d3));
  60.  assertNull(cal.addPeriod(d2, d3));
  61. }
  62. public void testGetPeriods() {
  63.  Planning cal = new NoOverlapPlanning();
  64.  Period p1to2 = cal.addPeriod(d1, d2);
  65.  Period p3to4 = cal.addPeriod(d3, d4);
  66.  Period p5to6 = cal.addPeriod(d5, d6);
  67.  Period p7to10 = cal.addPeriod(d7, d10);
  68.  // arguement checking
  69.  try {
  70.   cal.getPeriods(d3, d1);
  71.   fail();
  72.  } catch (IllegalArgumentException e) {
  73.  }
  74.  // simple inteval test
  75.  Collection c = cal.getPeriods(d3, d7);
  76.  Iterator i = c.iterator();
  77.  assertTrue(i.hasNext());
  78.  assertEquals(i.next(), p3to4);
  79.  assertTrue(i.hasNext());
  80.  assertEquals(i.next(), p5to6);
  81.  assertFalse(i.hasNext());
  82.  // lower bound is lower than lowest period
  83.  c = cal.getPeriods(d0, d4);
  84.  i = c.iterator();
  85.  assertTrue(i.hasNext());
  86.  assertEquals(i.next(), p1to2);
  87.  assertTrue(i.hasNext());
  88.  assertEquals(i.next(), p3to4);
  89.  assertFalse(i.hasNext());
  90.  // upper bound is upper than top period
  91.  c = cal.getPeriods(d4, d11);
  92.  i = c.iterator();
  93.  assertTrue(i.hasNext());
  94.  assertEquals(i.next(), p5to6);
  95.  assertTrue(i.hasNext());
  96.  assertEquals(i.next(), p7to10);
  97.  assertFalse(i.hasNext());
  98.  // lower bound is upper than end of top period
  99.  c = cal.getPeriods(d10, d11);
  100.  i = c.iterator();
  101.  assertFalse(i.hasNext());
  102.  //lower bound is into a period
  103.  c = cal.getPeriods(d8, d11);
  104.  i = c.iterator();
  105.  assertTrue(i.hasNext());
  106.  assertEquals(i.next(), p7to10);
  107.  assertFalse(i.hasNext());
  108.  //upper bound is into a period
  109.  c = cal.getPeriods(d4, d9);
  110.  i = c.iterator();
  111.  assertTrue(i.hasNext());
  112.  assertEquals(i.next(), p5to6);
  113.  assertTrue(i.hasNext());
  114.  assertEquals(i.next(), p7to10);
  115.  assertFalse(i.hasNext());
  116.  cal.addPeriod(d11, d12);
  117.  //upper bound is into a period
  118.  c = cal.getPeriods(d4, d9);
  119.  i = c.iterator();
  120.  assertTrue(i.hasNext());
  121.  assertEquals(i.next(), p5to6);
  122.  assertTrue(i.hasNext());
  123.  assertEquals(i.next(), p7to10);
  124.  assertFalse(i.hasNext());
  125. }
  126. public void testRemovePeriod() {
  127.  Planning cal = new NoOverlapPlanning();
  128.  Period p1to2 = cal.addPeriod(d1, d2);
  129.  cal.removePeriod(p1to2);
  130.  Collection c = cal.getPeriods(d0, d3);
  131.  Iterator i = c.iterator();
  132.  assertFalse(i.hasNext());
  133.  // try to remove an absent period
  134.  Period p1to3 = cal.addPeriod(d1, d3);
  135.  cal.removePeriod(p1to2);
  136.  c = cal.getPeriods(d0, d3);
  137.  i = c.iterator();
  138.  assertTrue(i.hasNext());
  139.  assertEquals(i.next(), p1to3);
  140.  assertFalse(i.hasNext());
  141. }
  142. /**
  143.  * Constructor for SimplePeriodTest.
  144.  * @param arg0
  145.  */
  146. public SimplePeriodTest(String arg0) {
  147.  super(arg0);
  148. }
  149. /*
  150. public static Test suite() {
  151.  return new AssertionCoverageDecorator(
  152.   SimplePeriodTest.class,
  153.   new Class[] { NoOverlapPlanning.class });
  154. }
  155. */
  156. }


cette classe couvre *tout* sauf les assertions chez moi.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 05-01-2004 à 06:16:53    

[:bien]
je met ça en place demain entre 2 vaisselles.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 05-01-2004 à 06:51:56    

tu relis et tu vérifies d'abord stp, c'est la première fois que je fais ce type de tests.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 05-01-2004 à 11:04:38    

:jap:
 
pas mal comme sujet de concours :)
Mais c'est vrai qu'après faut avoir le temps de s'y mettre :/

Reply

Marsh Posté le 05-01-2004 à 17:31:03    

merde ça a buggé et planté avant de s'occuper de la participation d'nraynaud [:joce]


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 05-01-2004 à 17:43:14    

nraynaud, pourrais-tu re-uploader ton archive avec uniquement les sources? :)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 05-01-2004 à 22:26:54    

je ne te félicite pas !


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 05-01-2004 à 22:28:09    

nraynaud a écrit :

je ne te félicite pas !

pour le coup des sources, c'est juste que pour ce concours le nombre maxi de fichiers par archive est à 8 :D
 
mais bon, de ttes manières, après avoir corrigé ça j'ai trouvé un bug dans la gestion des tar qui fait qu'il pourra plus compter le nombre de fichiers tant que ce bug est pas corrigé, donc... :D


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 05-01-2004 à 22:32:26    

chage le testcase aussi stp.
 
edit : en plus les sources sont accessibles avant la fin du concours, je vais me faire piquer mon idée pas-si-bonne-que ças !


Message édité par nraynaud le 05-01-2004 à 22:33:43

---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 05-01-2004 à 22:35:27    

je suis en train de le regarder:
la dernière methode de test n'est pas correcte: un Period n'est pas determiné que par ses Date de début et de fin, mais aussi par la description etc.
 
edit: et le 2e groupe d'assertions dans ce test, c'est specifique à ton implementation à base de Proxy non ? sinon je n'en vois pas bien l'interet


Message édité par the real moins moins le 05-01-2004 à 22:36:51

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 05-01-2004 à 22:37:21    

nraynaud a écrit :


edit : en plus les sources sont accessibles avant la fin du concours, je vais me faire piquer mon idée pas-si-bonne-que ças !

oui j'y ai pensé à ça. je les vire? ou bien on se dit que ça va permettre une émulation au sens du groupe et à chacun de progresser? (on peut dire qu'on permet de participer plusieurs fois :o )


Message édité par the real moins moins le 05-01-2004 à 22:38:03

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 05-01-2004 à 22:48:04    

the real moins moins a écrit :

je suis en train de le regarder:
la dernière methode de test n'est pas correcte: un Period n'est pas determiné que par ses Date de début et de fin, mais aussi par la description etc.
 
edit: et le 2e groupe d'assertions dans ce test, c'est specifique à ton implementation à base de Proxy non ? sinon je n'en vois pas bien l'interet

1) j'ai fais ce que j'ai voulu, il n'y avait rien de marqué dans Period.java et mon seul but était de couvrir les testcases. Je vais modifier les tests et mon entrée alors.
 
2) si tu parles de ce que j'ai posé sur ton site, oui. Le test public est celui dans la page ici.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 05-01-2004 à 22:52:23    

nraynaud a écrit :


2) si tu parles de ce que j'ai posé sur ton site, oui. Le test public est celui dans la page ici.

rassure-moi, c'est le meme avec juste une methode en moins ?
 
je suis en train de revoir ton testcase. j'ai remplacé les assertions sur l'iterator par des assertions sur la taille de la collection retournée et des coll.contains(...), histoire de ne pas dépendre de l'ordre de la collection retournée, vu que ce n'est pas précisé dans le contrat. (ça aurait pas été con de le faire, cela dit - mais si on fait ça, on peut ajouter une méthode de test specifique pour l'ordre, c'est meme mieux, on sépare ainsi les "concerns" )


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 05-01-2004 à 22:56:53    

encore un truc, d'apres ton test, qd on fait getPeriods sur t1,t2, ça ne devrait pas retourner une period qui commence à t2 ... or ça devrait, je pense ;)
 


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 05-01-2004 à 22:57:55    

ah oui, bonne remarque.
Non, ne teste pas l'ordre, il est pas marqué dans l'interface.
 
edit :
heu oui, mais contains repose sur equals() qui n'est pas défini, assure-toi de l'identité.


Message édité par nraynaud le 05-01-2004 à 23:00:24

---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 05-01-2004 à 23:15:39    

the real moins moins a écrit :

encore un truc, d'apres ton test, qd on fait getPeriods sur t1,t2, ça ne devrait pas retourner une period qui commence à t2 ... or ça devrait, je pense ;)

non, car si tu veux avoir tes réunions de 9h à 10h, tu ne veux pas celle qui comence justement à 10h.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 05-01-2004 à 23:20:05    

nraynaud a écrit :

non, car si tu veux avoir tes réunions de 9h à 10h, tu ne veux pas celle qui comence justement à 10h.

auquel cas ton appli devrait demander de 9h a "10h moins un chouilla".  
 


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 05-01-2004 à 23:39:58    

the real moins moins a écrit :

auquel cas ton appli devrait demander de 9h a "10h moins un chouilla".  

j'ai pris le parti d'avoir des bornes qui se recouvrent, car l'utilisateur de base, les ensembles ouverts, il s'en fout. Et dans la mesure du possible, on parle le même vocabulaire dans et hors de l'application.
 
Maintenant, si t'insiste, ce n'est qu'une question de 2 '=' à virer dans mon entrée normalement.
 
Bon, ils arrivent ces nouveaux testcases ?


Message édité par nraynaud le 05-01-2004 à 23:40:42

---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 05-01-2004 à 23:49:48    

nraynaud a écrit :

j'ai pris le parti d'avoir des bornes qui se recouvrent, car l'utilisateur de base, les ensembles ouverts, il s'en fout. Et dans la mesure du possible, on parle le même vocabulaire dans et hors de l'application.
 
Maintenant, si t'insiste, ce n'est qu'une question de 2 '=' à virer dans mon entrée normalement.

ben disons que ça me parait plus clair au niveau de l'api d'inclure dans tous les cas, que de commencer à jouer sur le fait qu'on inclut pour la borne du bas mais pas pour la borne du haut, non ?
 
 
et oui, les testcases arrivent. je modifie qques bricoles en meme temps.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 05-01-2004 à 23:56:34    

the real moins moins a écrit :

ben disons que ça me parait plus clair au niveau de l'api d'inclure dans tous les cas, que de commencer à jouer sur le fait qu'on inclut pour la borne du bas mais pas pour la borne du haut, non ?

non on inclus pas la borne du bas.
quand l'utilisateur veut le planning de çh à 10h, on lui file pas les réunions qui finissent à 9h pile, ni celles qui commencent à 10h pile.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed