Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[20210607] (Java) 2DArray to List of List, JUnit assertThatThrownBy(), @ParameterizedTest example #141

Open
JuHyun419 opened this issue Jun 7, 2021 · 0 comments

Comments

@JuHyun419
Copy link
Owner

JuHyun419 commented Jun 7, 2021

Java 2차원 배열 -> List<List>

    // int[][] -> LIst<List<Integer>>
    private static List<List<Integer>> twoDArrayToList(int[][] twoDArray) {
        List<List<Integer>> result = new ArrayList<>();
        for (int[] array : twoDArray) {
            List<Integer> list = toList(array);
            result.add(list);
        }
        return result;
    }

    private static List<Integer> toList(int[] array) {
        return Arrays.stream(array).boxed().collect(Collectors.toList());
    }

    // 2DArray to List of List (1)
    public <T> List<T> twoDArrayToList(T[][] twoDArray) {
        List<T> list = new ArrayList<T>();
        for (T[] array : twoDArray) {
            list.addAll(Arrays.asList(array));
        }
        return list;
    }

    // 2DArray to List of List (2)
    public <T> List<T> twoDArrayToList2(T[][] twoDArray) {
        return Arrays.stream(twoDArray)  //'array' is two-dimensional
                .flatMap(Arrays::stream)
                .collect(Collectors.toList());
    }

    // String 2DArray to List of List
    public List<List<String>> string2DArrayToList(String[][] twoDArray) {
        return Arrays.stream(twoDArray)
                .map(Arrays::asList)
                .collect(Collectors.toList());
    }



JUnit Test Code - assertThatThrownBy(), @ParameterizedTest, @valuesource, @CsvSource

    @DisplayName("String의 charAt 메소드는 특정 위치를 벗어나면 예외를 발생한다")
    @Test
    void charAt_outOfIndex_test() {
        assertThatThrownBy(() -> {
            String str = "abcd";
            char ch = str.charAt(10); })
                .isInstanceOf(IndexOutOfBoundsException.class)
                .hasMessageContaining("range: 10");
    }



    /**
     * 요구사항 2
     * Set의 contains() 메소드를 활용해 1, 2, 3 의 값이 존재하는지를 확인하는 학습 테스트 구현
     * 중복 코드 제거 -> JUnit의 ParameterizedTest 활용
     */
    @ParameterizedTest
    @ValueSource(ints = {1, 2, 3})
    void set_contains_test(int element) {
        assertThat(numbers.contains(element)).isTrue();
    }


    /**
     * 요구사항 3
     * 요구사항 2는 contains 메소드 결과 값이 true인 경우만 테스트가 가능
     * 입력값에 따라 결과값이 다른 경우에 대한 테스트도 가능하도록 구현
     * ex) 1, 2, 3 값은 contains 메소드 실행 결과 true이고 4,5 값은 false가 반환되는 테스트를 하나의 함수로 구현
     * @CsvSource 활용
     */
    @DisplayName("true, false 값을 같이 리턴한다")
    @ParameterizedTest
    @CsvSource(value = {"1:true", "2:true", "3:true", "4:false", "5:false"}, delimiter = ':')
    void set_contains_true_false(int element, boolean expected) {
        assertThat(numbers.contains(element)).isEqualTo(expected);
    }



간단 회고

오늘부터 본격적으로 달리기 시작했다 !
아직 복습할 부분이 조금 남긴했지만, 틈틈히 보고 원래 계획에는 없었던 넥스트스텝의 자바 플레이그라운드과정을 오늘부터 듣고있다.
매일 꾸준히 일정 시간 이상 투자를 해서 학습할 계획이다.
원래 TDD 수업도 올해말이나 내년초쯤에 들을 계획이었으나, 저렴한 가격에 이러한 좋은 강의가 나오게 되어서 바로 구매하게 되었고,
오늘 좀 공부해본 결과 여러 테스트 코드에 대해 작성하는 법을 배울 수 있어서 좋은 것 같다.

퇴사를 하고 공부를 하니 확실히 개인 시간이 많아져서 좋지만, 밤이 되어 되돌아보면 하루가 너무 짧은 느낌이다 :(
언제 취업을 하게될지는 모르겠지만, 그 전까지 정말 후회없이 열심히 해서 많은 실력을 쌓고싶다 !

플레이 그라운드

@JuHyun419 JuHyun419 added the Java label Jun 7, 2021
@JuHyun419 JuHyun419 changed the title [20210607] (Java) 2DArray to List of List [20210607] (Java) 2DArray to List of List, JUnit assertThatThrownBy(), @ParameterizedTest example Jun 7, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant