 
    During this activity:
This activity helps students develop the following skills, values and attitudes: ability to analyze and synthesize, capacity for identifying and solving problems, and efficient use of computer systems.
This activity can be developed individually or in pairs.
                Create a directory called adapter and a subdirectory src within it. Inside the src folder create three files called: simple_queue.rb, queue_adapter.rb, and adapter_test.rb.
            
All three Ruby source files must start with a comment containing title, date, and the authors' personal information. For example:
# Adapter Pattern # Date: 30-Sep-2019 # Authors: # A00456654 Thursday Rubinstein # A01160611 Anthony Stark
                The content of the file simple_queue.rb is as follows:
            
# File: simple_queue.rb # IMPORTANT: Do not modify the following class in any way! class SimpleQueue def initialize @info =[] end def insert(x) @info.push(x) self end def remove if empty? raise "Can't remove if queue is empty" else @info.shift end end def empty? @info.empty? end def size @info.size end def inspect @info.inspect end end
                The SimpleQueue class contains a First-In First-Out (FIFO) data structure that implements the following methods:
            
| Method Signature | Description | 
|---|---|
| insert(x) | Inserts x at the back of this queue. Returns this queue. | 
| remove | Removes and returns the element at the front of this queue. Raises an exception if this queue happens to be empty. | 
| empty? | Returns trueif this queue is empty, otherwise returnsfalse. | 
| size | Returns the number of elements currently stored in this queue. | 
                Write an adapter class called QueueAdapter (place it in the file called queue_adapter.rb) that makes a SimpleQueue instance (as implemented above) behave like a Last-In First-Out (LIFO) stack with the following interface:
            
| Method Signature | Description | 
|---|---|
| initialize(q) | Initializes a new stack, using q as the adaptee. | 
| push(x) | Inserts x at the top of this stack. Returns this stack. | 
| pop | Returns nilif this stack is empty, otherwise removes and returns its top element. | 
| peek | Returns nilif this stack is empty, otherwise returns its top element without removing it. | 
| empty? | Returns trueif this stack is empty, otherwise returns false. | 
| size | Returns the number of elements currently stored in this stack. | 
QueueAdapter class. Place the test class in the adapter_test.rb source file.
# File: adapter_test.rb require 'minitest/autorun' require 'simple_queue' require 'queue_adapter' class QueueAdapterTest < Minitest::Test def test_queue_adapter q = SimpleQueue.new qa = QueueAdapter.new(q) assert q.empty? assert qa.empty? assert_nil qa.pop assert_same qa, qa.push("Foo") assert_equal "Foo", qa.peek refute q.empty? refute qa.empty? assert_same qa, qa.push("Bar") assert_equal "Bar", qa.peek assert_same qa, qa.push("Baz").push("Quux") assert_equal 4, q.size assert_equal 4, qa.size assert_equal "Quux", qa.peek assert_equal "Quux", qa.pop assert_equal "Baz", qa.peek assert_equal "Baz", qa.pop assert_equal "Bar", qa.peek assert_equal "Bar", qa.pop assert_equal "Foo", qa.peek assert_same qa, qa.push("Goo") assert_equal "Goo", qa.peek assert_equal "Goo", qa.pop assert_equal "Foo", qa.peek assert_equal 1, qa.size assert_equal "Foo", qa.pop assert_nil qa.peek assert_nil qa.pop assert q.empty? assert qa.empty? assert_equal 0, q.size assert_equal 0, qa.size end end
        Create a compressed tarball file with the full contents of the adapter directory (including the generated HTML documentation in the doc subdirectory). Call this file adapter.tgz. From a terminal, you can use the following command to create this file (make sure to run it at the same level where the adapter folder resides):
    
tar czf adapter.tgz adapter
      To deliver the adapter.tgz file, please provide the following information:
    
Only one team member needs to upload the file.
Due date is Monday, September 30.
This activity will be evaluated using the following criteria:
| 50% | Implementation of program requirements. | 
|---|---|
| 50% | Documentation. | 
| 1 | The program and/or documentation was plagiarized. |