#summary Project Progress/Log for the Testing, Code Guru, Code Quality Assurance Project (GSoC2010) of Melange
#labels Phase-Design,Contents-Draft,Importance-Details

<wiki:toc max_depth="3" />


= Introduction =
  This document will be used to documents the progress and details of the Testing, Code Guru, Code Quality Assurance Project (GSoC2010) of Melange. 


= Meetings and Agendas =

== Wednesday May 14, 2010 18:00 in UTC ==
===Meeting Logs===
    Meeting start: http://www.thousandparsec.net/~irc/logm/%23melange.2010-05-14.log.html#t2010-05-14T18:08:47

    Meeting End: http://www.thousandparsec.net/~irc/logm/%23melange.2010-05-14.log.html#t2010-05-14T19:19:48    
    

===Meeting Notes===

  Location: #melange on freenode

  Chaired by: Sverre Rabbelier

  Notes taken by: Leo (Chong Liu)

    * Told Sverre what I had done:
       * Learned the code base of Melange and Melange tests
       * Generated the directory organization of Melange and Melange tests
       * Generated the package diagram and the class diagram of Melange
       * Made some statistics on the code base of Melange
    * Sverre suggested me to do:
       * Start with the testing of the modules which are the most important and used most, e.g. soc.logic.models.base and soc.views.models.base
       * Specifically add more test cases to the existing tests of these modules, e.g. tests.app.soc.logic.models.base and tests.app.soc.views.models.base

= Specification & Requirements =
  The detailed project specification will be added and updated here.  


= Timeline =
  The tentative project timeline will be added here.


= Project Design and Implementation =
  The software design and implementation details will be added here.