Stack
Implementation and Design
Advantage and Limitation
Advantages of Array-based Implementation Fast:
all operations are completed in one step. No loops are needed O(1)
Limitations of Array-based Implementation:
You have to know the upper bound of growth and allocate memory accordingly. If the array is full and there is another push operation then you encounter an exception (error).
Source: https://docs.google.com/presentation/d/1ryohkuP2uwf2AyvQS37RY3F2YVS5Jozp/edit#slide=id.p1
JUnit, Compilation Steps
Testing
Black-box Testing
- You don’t know (or you pretend you don’t know) how something is implemented
- You test only based on inputs and outputs
Clear-box Testing (aka “white-box testing”) - If you can look inside the black box and see how a method is implemented, you can do more detailed testing
Why Bother? http://stackoverflow.com/questions/10858990/why-use-junit-for-testing
Unit (Micro)-Testing
- Whether you are doing black-box or clear-box testing, you should test every unit of a software system.
- What is a unit? In object-oriented programming, usually a software unit is taken to be a single method.
- So: we should test every method of every class in the software.
- JUnit is a widely used framework for unit testing of Java software.
Test-Driven Development (TDD)
Steps to developing according to TDD:
- Identify a new feature.
- Write a unit test for that feature.
- Run the test. It should fail. (RED)
- Write code that passes test. (GREEN)
- Implementation is certifiably good!
- Optional: Refactor code to make it faster, cleaner, etc.
Not required but testing is always needed.
Problem to Solve
- Swap characters in the string:
- “Marina”
“aniraM” - “Class”
“ssalC”
@BeforeEach
, @AfterEach
, @BeforeAll
@BeforeEach
- annotation is used to signal that the annotated method should be executed before each invocation.
@AfterEach
- is used to signal that the annotated method should be executed after each
@Test
. @BeforeAll
- runs once before any of the test methods in the class