User Tools

Site Tools


haas:fall2015:data:projects:dls0

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
haas:fall2015:data:projects:dls0 [2015/11/08 13:59] – [List Library unit tests] wedgehaas:fall2015:data:projects:dls0 [2015/11/16 15:55] (current) – [Errata] wedge
Line 11: Line 11:
 This section will document any updates applied to the project since original release: This section will document any updates applied to the project since original release:
  
-  * __revision #__<description> (DATESTRING)+  * __revision 1__unit-cpstack was reporting incorrect status codes (20151116) 
 +    * on test 7, a copy of a populated stack, the unit test was incorrectly expecting "DLS_EMPTY | DLS_SUCCESS | DLL_EMPTY | DLL_SUCCESS", instead of "DLS_SUCCESS | DLL_SUCCESS" (FIXED)
  
 =====Objective===== =====Objective=====
Line 166: Line 167:
 </code> </code>
  
-__**Technical note**__: Due to space constraints, you'll notice **DLS_DEFAULT_FAIL** is not a unique number, but a combination of two previous values. This is made possible by using two values that should never be regularly occurring, and especially not in combination: **DLN_DEFAULT_FAIL** and **DLL_DEFAULT_FAIL**. I had to employ a similar trick with queues, which you'll see in next week's project.+__**Technical note**__: Due to space constraints (there are 9 stack status codes), you'll notice **DLS_DEFAULT_FAIL** is not a unique number, but a combination of two previous values. This is made possible by using two values that should never be regularly occurring, and especially not in combination: **DLN_DEFAULT_FAIL** and **DLL_DEFAULT_FAIL**. I had to employ a similar trick with queues, which you'll see in next week's project.
  
  
Line 186: Line 187:
   * **DLS_CREATE_FAIL** - memory allocation failed (considered in error)   * **DLS_CREATE_FAIL** - memory allocation failed (considered in error)
   * **DLS_NULL** - result is NULL (probably in error)   * **DLS_NULL** - result is NULL (probably in error)
-  * **DLS_EMPTY** - result is an empty list (may or may not be in error)+  * **DLS_EMPTY** - result is an empty list/stack (may or may not be in error)
   * **DLS_OVERFLOW** - operation exceeds allocated size of list (may be considered an error)   * **DLS_OVERFLOW** - operation exceeds allocated size of list (may be considered an error)
   * **DLS_UNDERFLOW** - operation cannot proceed due to lack of data (may be considered an error)   * **DLS_UNDERFLOW** - operation cannot proceed due to lack of data (may be considered an error)
   * **DLS_DEFAULT_FAIL** - default state of unimplemented functions (default error)   * **DLS_DEFAULT_FAIL** - default state of unimplemented functions (default error)
-  * **DLS_FAIL** - some error occurred+  * **DLS_ERROR** - some error occurred 
 +  * **DLS_INVALID** - invalid state (pointer to stack does not exist)
  
 For example, in the case of "DLS_CREATE_FAIL", there are actually a total of three states raised: For example, in the case of "DLS_CREATE_FAIL", there are actually a total of three states raised:
-  * DLS_FAIL (a problem has occurred)+  * DLS_ERROR (a problem has occurred)
   * DLS_CREATE_FAIL (a problem has occurred when using malloc())   * DLS_CREATE_FAIL (a problem has occurred when using malloc())
   * DLS_NULL (no memory allocated, so stack cannot be anything but NULL)   * DLS_NULL (no memory allocated, so stack cannot be anything but NULL)
  
-ALL THREE states must be returned from the function in question should such an occurrence take place+ALL THREE states must be returned from the function in question should such an occurrence take place (in additionvarious underlying list and node status codes may be present as well-- see the unit tests for more information).
- +
-It is also intended that when handling stack status codesany list status codes will also be present (that is why **code_t** is a short int, whereas the list status code was a char-- we have twice the amount of bytes for status code storage now-- lower 8-bits for list, upper 8-bits for stack). +
 ====Stack library unit tests==== ====Stack library unit tests====
 In **testing/stack/unit/**, you will find these files: In **testing/stack/unit/**, you will find these files:
Line 239: Line 238:
 It is also highly recommended to undertake as it will give you further experience working with these concepts. It is also highly recommended to undertake as it will give you further experience working with these concepts.
  
-Note this is a DIFFERENT approach than you would have taken in the program with sll2- you're to use stack functionality to aid you with the heavy lifting. While you will still make use of list functionality for grabbing the initial input, the actual palindrome comparison processing needs to heavily involve stacks.+Note this is a DIFFERENT approach than you would have taken in the program with sll2 and dll1- you're to use stack functionality to aid you with the heavy lifting. You should not be directly using any list functions in the implementation of this solution, except perhaps in the initial building of the input string (otherwise use the stackand let the stack use the list functions).
  
 =====Expected Results===== =====Expected Results=====
-To assist you in verifying a correct implementation, a fully working implementation of the node, list, and stack libraries should resemble the following (when running the respective verify script): +To assist you in verifying a correct implementation, you can check your implementation against the results of my implementation:
- +
-====node library==== +
-Here is what you should get for node: +
- +
-<cli> +
-lab46:~/src/data/dls0$ bin/verify-node.sh  +
-==================================================== +
-=    Verifying Doubly-Linked Node Functionality    = +
-==================================================== +
-  [mknode] Total:   5, Matches:   5, Mismatches:   0 +
-  [cpnode] Total:   6, Matches:   6, Mismatches:   0 +
-  [rmnode] Total:   2, Matches:   2, Mismatches:   0 +
-==================================================== +
- [RESULTS] Total:  13, Matches:  13, Mismatches:   0 +
-==================================================== +
-lab46:~/src/data/dls0$  +
-</cli> +
- +
-As no coding changes were needed in the node library, these results should be identical to that of a fully functioning node implementation from the **dll0** project. +
- +
-====list library==== +
-Here is what you should get for list: +
- +
-<cli> +
-lab46:~/src/data/dls0$ bin/verify-list.sh  +
-==================================================== +
-=    Verifying Doubly-Linked List Functionality    = +
-==================================================== +
-  [mklist] Total:  15, Matches:  15, Mismatches:   0 +
-  [append] Total:  40, Matches:  40, Mismatches:   0 +
-  [insert] Total:  41, Matches:  41, Mismatches:   0 +
-  [obtain] Total:  70, Matches:  70, Mismatches:   0 +
- [display] Total:  28, Matches:  28, Mismatches:   0 +
-==================================================== +
- [RESULTS] Total: 194, Matches: 194, Mismatches:   0 +
-==================================================== +
-lab46:~/src/data/dls0$  +
-</cli> +
- +
-Due to the re-introduction of **qty** into list (impacting actions performed by **mklist()**, **append()**, **insert()**, and **obtain()**), along with feature additions to **display()**, those functions saw additional tests performed, so our original max total of **102** from **dll0** has now changed to **140** (ie various **qty** and **display()**-related tests adding to the previous total). +
- +
-Remember though- aside from the minor change of adding **qty** and enhancing **display()**, all remaining list functions need no change (and **mklist()/append()/insert()/obtain()** remained largely unchanged).+
  
 ====stack library==== ====stack library====
Line 290: Line 247:
  
 <cli> <cli>
-lab46:~/src/data/dls0$ bin/verify-stack.sh +lab46:~/src/data/dls0$ make check 
-=================================================== +====================================================== 
-  Verifying Doubly-Linked Stack Functionality   +   Verifying Doubly-Linked Stack Functionality     
-=================================================== +====================================================== 
-[mkstack] Total:   6, Matches:   6, Mismatches:   0 +   [mkstack] Total:   9, Matches:   9, Mismatches:   0 
-[cpstack] Total:  12, Matches:  12, Mismatches:   0 +      [push] Total:  18, Matches:  18, Mismatches:   0 
-[rmstack] Total:   6, Matches:   6, Mismatches:   0 +       [pop] Total:  19, Matches:  19, Mismatches:   0 
-   [push] Total:  30, Matches:  30, Mismatches:   0 +   [cpstack] Total:  11, Matches:  11, Mismatches:   0 
-    [pop] Total:  25, Matches:  25, Mismatches:   0 +      [peek] Total:  20, Matches:  20, Mismatches:   0 
-   [peek] Total:  37, Matches:  37, Mismatches:   0 +   [isempty] Total:   5, Matches:   5, Mismatches:   0 
-[isempty] Total:  13, Matches:  13, Mismatches:   0 +   [rmstack] Total:  10, Matches:  10, Mismatches:   0 
-=================================================== +====================================================== 
-[RESULTS] Total: 129, Matches: 129, Mismatches:   0 +   [RESULTS] Total:  92, Matches:  92, Mismatches:   0 
-=================================================== +====================================================== 
 lab46:~/src/data/dls0$  lab46:~/src/data/dls0$ 
 </cli> </cli>
-=====Submission Criteria===== +=====Submission===== 
-To be successful in this project, the following criteria must be met:+{{page>haas:fall2015:common:submitblurb#DATA&noheader&nofooter}}
  
-  * Project must be submit on time, by the posted deadline. 
-    * Late submissions will lose 25% credit per day, with the submission window closing on the 4th day following the deadline. 
-  * All code must compile cleanly (no warnings or errors) 
-    * all requested functions must be implemented in the related library 
-    * all requested functionality must conform to stated requirements (either on this project page or in comment banner in source code files themselves). 
-  * Executed programs must display in a manner similar to provided output 
-    * output formatted, where applicable, must match that of project requirements 
-  * Processing must be correct based on input given and output requested 
-  * Output, if applicable, must be correct based on values input 
-  * Code must be nicely and consistently indented (you may use the **indent** tool) 
-  * Code must be commented 
-    * Any "to be implemented" comments **MUST** be removed 
-      * these "to be implemented" comments, if still present at evaluation time, will result in points being deducted. 
-    * Sufficient comments explaining the point of provided logic **MUST** be present 
-  * Track/version the source code in a repository 
-  * Submit a copy of your source code to me using the **submit** tool (**make submit** will do this) by the deadline. 
haas/fall2015/data/projects/dls0.1446991186.txt.gz · Last modified: 2015/11/08 13:59 by wedge