Java functional testing
A. Java/C++/C#/C
 
//ASSUMPTION: the array input is sorted. Ex: int[] input={1,3,4} or int[]={2,3,3,4,5,5,5,6}, etc.
 
public class MyArrayProcessing {
 
 public static int[] whatAmIdoing(int[] input){
 
 int j = 0;
 int i = 1;
 
 if(input.length < 2){
 return input;
 }
 while(i < input.length){
 if(input[i] == input[j]){
 i++;
 }else{
 input[++j] = input[i++];
 }   
 }
 int[] output = new int[j+1];
 for(int k=0; k output[k] = input[k];
 }
 
 return output;
 }
 
 
1. Q: What is the "whatAmIdoing" method doing (input is assumed to be sorted)?
 
2. Q: How would you test "whatAmIDoing?" What specific functional test cases would you try?
 
3. Q: Implement 2 test cases from 2) in the language/scripting of your choice.
 
 
 
 
B. Java/C++/C#/C
 
//The reverseList method reverses a singly linked list of Node(s). For example: head -> 1 -> 5 -> 3 -> null
// should become head -> 3 -> 5 -> 1 -> null. But reverseList has a defect, and does not reverse a list properly.
 
public class Node{
 public int data;
 public Node next;
 public Node(int data, Node next){
 this.data = data;
 this.next = next;
 }
}
 
public class MyReverseList {
 public Node reverseList (Node head)
 {
 if (head == NULL || head.next == NULL)
 return;
 
 Node Scnd = head.next;
 Node Thrd = Scnd.next;  
 Scnd.next = head;
 head.next = NULL;
 
 if (Thrd == NULL)
 return;  
 
 Node Crrnt = Thrd;
 Node Prvus = Scnd;
 
 while (Crrnt != NULL)
 { 
 Node Next = Crrnt.next;
 Currnt.next = Prvus;
 Prvus = Crrnt;
 Crrnt = Next;  
 }
 }
}
 
 
1. Q: Please correct the defect in reverseList so it reverses a linked-list correctly.
 
2. Q: How would you test reverseList? What specific functional test cases would you try?
 
3. Q: Implement 2 test cases from 2) in the language/scripting of your choice.