@Test
	public void testQueueUsage() {
		Thread testThread = new Thread(pipelinedFDstage); //A thread running through pipelined FDstage.
		testThread.start(); //Start the thread, which runs until interrupted (execute stage is responsible for terminating
		int opcodeValue = 0; 
		for (int i = 0; i < 10; i ++) { //There are 10 instruction declarations in simpleEquation.txt program used in assembler
			try {
				opcodeValue = testFetchToExecuteQueue.take().getOpcode().getValue(); //Have THIS thread Take from the queue
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			Instruction actualInstruction = (Instruction) assembler.getProgramCode()[i];
			assertEquals(actualInstruction.getOpcode().getValue(), opcodeValue); //Compare the opcode of the instruction from the assembly
					//file to the one put into the queue by the fetch/decode stage.
		}
		testThread.interrupt(); //Stops the thread
		while(testThread.isAlive()); //Ensures the thread dies as it should after an interrupt
		System.out.println("Done!"); //This statement will not be reached if the interrupt does not terminate the thread
		//Note that the thread is not strictly terminated but is forced to run to completion without fetching or decoding any more
		//instructions.
	}