trackler 2.0.6.22 → 2.0.6.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/common/exercises/book-store/canonical-data.json +61 -80
  3. data/common/exercises/etl/canonical-data.json +69 -0
  4. data/lib/trackler/version.rb +1 -1
  5. data/tracks/go/config.json +10 -4
  6. data/tracks/java/config.json +13 -1
  7. data/tracks/java/exercises/diamond/build.gradle +17 -0
  8. data/tracks/java/exercises/diamond/src/example/java/DiamondPrinter.java +41 -0
  9. data/tracks/java/exercises/diamond/src/main/java/DiamondPrinter.java +5 -0
  10. data/tracks/java/exercises/diamond/src/test/java/DiamondPrinterTest.java +111 -0
  11. data/tracks/java/exercises/grade-school/src/example/java/School.java +20 -19
  12. data/tracks/java/exercises/grade-school/src/test/java/SchoolTest.java +53 -20
  13. data/tracks/java/exercises/secret-handshake/build.gradle +17 -0
  14. data/tracks/java/exercises/secret-handshake/src/example/java/HandshakeCalculator.java +29 -0
  15. data/tracks/java/exercises/secret-handshake/src/example/java/Signal.java +1 -0
  16. data/tracks/java/exercises/secret-handshake/src/main/java/HandshakeCalculator.java +5 -0
  17. data/tracks/java/exercises/secret-handshake/src/main/java/Signal.java +5 -0
  18. data/tracks/java/exercises/secret-handshake/src/test/java/HandshakeCalculatorTest.java +106 -0
  19. data/tracks/java/exercises/settings.gradle +2 -0
  20. data/tracks/julia/config.json +42 -0
  21. data/tracks/julia/exercises/bob/bob.jl +3 -0
  22. data/tracks/julia/exercises/bob/example.jl +30 -0
  23. data/tracks/julia/exercises/bob/runtests.jl +70 -0
  24. data/tracks/julia/exercises/difference-of-squares/difference-of-squares.jl +14 -0
  25. data/tracks/julia/exercises/difference-of-squares/example.jl +9 -0
  26. data/tracks/julia/exercises/difference-of-squares/runtests.jl +22 -0
  27. data/tracks/julia/exercises/hamming/example.jl +5 -0
  28. data/tracks/julia/exercises/hamming/hamming.jl +3 -0
  29. data/tracks/julia/exercises/hamming/runtests.jl +42 -0
  30. data/tracks/julia/exercises/hello-world/example.jl +3 -0
  31. data/tracks/julia/exercises/hello-world/hello-world.jl +3 -0
  32. data/tracks/julia/exercises/hello-world/runtests.jl +12 -0
  33. data/tracks/julia/exercises/word-count/example.jl +9 -0
  34. data/tracks/julia/exercises/word-count/runtests.jl +47 -0
  35. data/tracks/julia/exercises/word-count/word-count.jl +3 -0
  36. data/tracks/objective-c/config.json +10 -0
  37. data/tracks/objective-c/exercises/flatten-array/FlattenArrayExample.h +6 -0
  38. data/tracks/objective-c/exercises/flatten-array/FlattenArrayExample.m +48 -0
  39. data/tracks/objective-c/exercises/flatten-array/FlattenArrayTest.m +110 -0
  40. data/tracks/objective-c/xcodeProject/ObjectiveC.xcodeproj/project.pbxproj +33 -0
  41. data/tracks/ocaml/config.json +5 -0
  42. data/tracks/ocaml/exercises/pangram/.merlin +3 -0
  43. data/tracks/ocaml/exercises/pangram/Makefile +11 -0
  44. data/tracks/ocaml/exercises/pangram/example.ml +9 -0
  45. data/tracks/ocaml/exercises/pangram/pangram.mli +1 -0
  46. data/tracks/ocaml/exercises/pangram/test.ml +29 -0
  47. data/tracks/ocaml/tools/test-generator/templates/pangram/template.ml +15 -0
  48. data/tracks/pascal/config.json +8 -0
  49. data/tracks/pascal/docs/INSTALLATION.md +3 -3
  50. data/tracks/pascal/docs/img/07delphiclicklibrarypathbuttonLogo.png +0 -0
  51. data/tracks/pascal/exercises/grains/GrainsTests.dpr +60 -0
  52. data/tracks/pascal/exercises/grains/uGrainsExample.pas +33 -0
  53. data/tracks/pascal/exercises/grains/uGrainsTests.pas +149 -0
  54. data/tracks/perl6/SETUP.md +8 -2
  55. metadata +41 -2
@@ -0,0 +1,70 @@
1
+ using Base.Test
2
+
3
+ include("bob.jl")
4
+
5
+ questions = (
6
+ "Does this cryogenic chamber make me look fat?",
7
+ "You are, what, like 15?",
8
+ "fffbbcbeab?",
9
+ "4?", ":) ?",
10
+ "Wait! Hang on. Are you going to be OK?",
11
+ "Okay if like my spacebar quite a bit? ",
12
+ )
13
+
14
+ yells = (
15
+ "WATCH OUT!",
16
+ "FCECDFCAAB",
17
+ "WHAT THE HELL WERE YOU THINKING?",
18
+ "1, 2, 3 GO!",
19
+ "ZOMG THE %^*@#\$(*^ ZOMBIES ARE COMING!!11!!1!",
20
+ "I HATE YOU",
21
+ )
22
+
23
+ silences = (
24
+ "",
25
+ " ",
26
+ "\t\t\t\t\t\t\t\t\t\t",
27
+ "\n\r \t",
28
+ )
29
+
30
+ miscs = (
31
+ "Tom-ay-to, tom-aaaah-to.",
32
+ "Let's go make out behind the gym!",
33
+ "It's OK if you don't want to go to the DMV.",
34
+ "1, 2, 3",
35
+ "Ending with ? means a question.",
36
+ "\nDoes this cryogenic chamber make me look fat?\nno",
37
+ " hmmmmmmm...",
38
+ "This is a statement ending with whitespace ",
39
+ )
40
+
41
+ response = Dict(
42
+ :question => "Sure.",
43
+ :yelling => "Whoa, chill out!",
44
+ :silence => "Fine. Be that way!",
45
+ :misc => "Whatever."
46
+ )
47
+
48
+ @testset "questions" begin
49
+ @testset "$question" for question in questions
50
+ @test bob(question) == response[:question]
51
+ end
52
+ end
53
+
54
+ @testset "yelling" begin
55
+ @testset "$yell" for yell in yells
56
+ @test bob(yell) == response[:yelling]
57
+ end
58
+ end
59
+
60
+ @testset "silence" begin
61
+ @testset "$silence" for silence in silences
62
+ @test bob(silence) == response[:silence]
63
+ end
64
+ end
65
+
66
+ @testset "misc" begin
67
+ @testset "$misc" for misc in miscs
68
+ @test bob(misc) == response[:misc]
69
+ end
70
+ end
@@ -0,0 +1,14 @@
1
+ "Square the sum of the numbers up to the given number"
2
+ function sum_of_squares(n::Int)
3
+
4
+ end
5
+
6
+ "Sum the squares of the numbers up to the given number"
7
+ function square_of_sum(n::Int)
8
+
9
+ end
10
+
11
+ "Subtract sum of squares from square of sums"
12
+ function difference(n::Int)
13
+
14
+ end
@@ -0,0 +1,9 @@
1
+ # This uses reduce instead of sum because sum can't handle empty collections properly.
2
+ # There is no universal zero-element, so it has to be specified manually and cannot
3
+ # be determined automatically. Otherwise, n=0 will cause an error.
4
+ sum_of_squares(n::Int) = reduce(+, 0, i^2 for i in 1:n)
5
+
6
+ # However, sum{T<:Real}(r::Range{T}) can handle "empty" ranges.
7
+ square_of_sum(n::Int) = sum(1:n)^2
8
+
9
+ difference(n::Int) = square_of_sum(n) - sum_of_squares(n)
@@ -0,0 +1,22 @@
1
+ using Base.Test
2
+
3
+ include("difference-of-squares.jl")
4
+
5
+ @testset "Square the sum of the numbers up to the given number" begin
6
+ @test square_of_sum(5) == 225
7
+ @test square_of_sum(10) == 3025
8
+ @test square_of_sum(100) == 25502500
9
+ end
10
+
11
+ @testset "Sum the squares of the numbers up to the given number" begin
12
+ @test sum_of_squares(5) == 55
13
+ @test sum_of_squares(10) == 385
14
+ @test sum_of_squares(100) == 338350
15
+ end
16
+
17
+ @testset "Subtract sum of squares from square of sums" begin
18
+ @test difference(0) == 0
19
+ @test difference(5) == 170
20
+ @test difference(10) == 2640
21
+ @test difference(100) == 25164150
22
+ end
@@ -0,0 +1,5 @@
1
+ function distance(s1::AbstractString, s2::AbstractString)
2
+ length(s1) != length(s2) && throw(ArgumentError("Sequences must have the same length"))
3
+
4
+ reduce(+, 0, a != b for (a, b) in zip(s1, s2))
5
+ end
@@ -0,0 +1,3 @@
1
+ function distance(s1::AbstractString, s2::AbstractString)
2
+
3
+ end
@@ -0,0 +1,42 @@
1
+ using Base.Test
2
+
3
+ include("hamming.jl")
4
+
5
+ @testset "identical strands" begin
6
+ @test distance("A", "A") == 0
7
+ @test distance("GGACTGA", "GGACTGA") == 0
8
+ end
9
+
10
+ @testset "complete distance" begin
11
+ @test distance("A", "G") == 1
12
+ @test distance("AG", "CT") == 2
13
+ end
14
+
15
+ @testset "small distance" begin
16
+ @test distance("AT", "CT") == 1
17
+ @test distance("GGACG", "GGTCG") == 1
18
+ @test distance("ACCAGGG", "ACTATGG") == 2
19
+ end
20
+
21
+ @testset "non-unique characters" begin
22
+ @test distance("AGA", "AGG") == 1
23
+ @test distance("AGG", "AGA") == 1
24
+ end
25
+
26
+ @testset "same nucleotides in different positions" begin
27
+ @test distance("TAG", "GAT") == 2
28
+ end
29
+
30
+ @testset "large distance" begin
31
+ @test distance("GATACA", "GCATAA") == 4
32
+ @test distance("GGACGGATTCTG", "AGGACGGATTCT") == 9
33
+ end
34
+
35
+ @testset "empty strands" begin
36
+ @test distance("", "") == 0
37
+ end
38
+
39
+ @testset "different strand lengths" begin
40
+ @test_throws ArgumentError distance("AATG", "AAA")
41
+ @test_throws ArgumentError distance("ATA", "AGTG")
42
+ end
@@ -0,0 +1,3 @@
1
+ function hello(name::AbstractString="World")
2
+ return "Hello, $(name)!"
3
+ end
@@ -0,0 +1,3 @@
1
+ function hello()
2
+
3
+ end
@@ -0,0 +1,12 @@
1
+ using Base.Test
2
+
3
+ include("hello-world.jl")
4
+
5
+ @testset "no name" begin
6
+ @test hello() == "Hello, World!"
7
+ end
8
+
9
+ @testset "names" begin
10
+ @test hello("Alice") == "Hello, Alice!"
11
+ @test hello("Bob") == "Hello, Bob!"
12
+ end
@@ -0,0 +1,9 @@
1
+ function wordcount(sentence::AbstractString)
2
+ sentence = lowercase(sentence)
3
+ words = Dict()
4
+ for rx = eachmatch(r"[a-z]+'[a-z]+|[0-9a-z]+", sentence)
5
+ word = rx.match
6
+ words[word] = get(words, word, 0) + 1
7
+ end
8
+ words
9
+ end
@@ -0,0 +1,47 @@
1
+ using Base.Test
2
+
3
+ include("word-count.jl")
4
+
5
+ @testset "no words" begin
6
+ @test wordcount(" .\n,\t!^&*()~@#\$%{}[]:;'/<>") == Dict()
7
+ end
8
+
9
+ @testset "count one word" begin
10
+ @test wordcount("word") == Dict("word" => 1)
11
+ end
12
+
13
+ @testset "count one of each word" begin
14
+ @test wordcount("one of each") == Dict("one" => 1, "of" => 1, "each" => 1)
15
+ end
16
+
17
+ @testset "multiple occurrences of a word" begin
18
+ @test wordcount("one fish two fish red fish blue fish") == Dict("one" => 1, "fish" => 4, "two" => 1, "red" => 1, "blue" => 1)
19
+ end
20
+
21
+ @testset "handles cramped lists" begin
22
+ @test wordcount("one,two,three") == Dict("one" => 1, "two" => 1, "three" => 1)
23
+ end
24
+
25
+ @testset "handles expanded lists" begin
26
+ @test wordcount("one,\ntwo,\nthree") == Dict("one" => 1, "two" => 1, "three" => 1)
27
+ end
28
+
29
+ @testset "ignore punctuation" begin
30
+ @test wordcount("car: carpet as java: javascript!!&@\$%^&") == Dict("car" => 1, "carpet" => 1, "as" => 1, "java" => 1, "javascript" => 1)
31
+ end
32
+
33
+ @testset "include numbers" begin
34
+ @test wordcount("testing, 1, 2 testing") == Dict("testing" => 2, "1" => 1, "2" => 1)
35
+ end
36
+
37
+ @testset "normalize case" begin
38
+ @test wordcount("go Go GO Stop stop") == Dict("go" => 3, "stop" => 2)
39
+ end
40
+
41
+ @testset "with apostrophes" begin
42
+ @test wordcount("First: don't laugh. Then: don't cry.") == Dict("first" => 1, "don't" => 2, "laugh" => 1, "then" => 1, "cry" => 1)
43
+ end
44
+
45
+ @testset "with quotations" begin
46
+ @test wordcount("Joe can't tell between 'large' and large.") == Dict("joe" => 1, "can't" => 1, "tell" => 1, "between" => 1, "large" => 2, "and" => 1)
47
+ end
@@ -0,0 +1,3 @@
1
+ function wordcount(sentence::AbstractString)
2
+
3
+ end
@@ -105,6 +105,16 @@
105
105
  "Filtering"
106
106
  ]
107
107
  },
108
+ {
109
+ "difficulty": 2,
110
+ "slug": "flatten-array",
111
+ "topics": [
112
+ "Searching",
113
+ "Looping",
114
+ "Lists"
115
+ ]
116
+ },
117
+
108
118
  {
109
119
  "difficulty": 3,
110
120
  "slug": "sublist",
@@ -0,0 +1,6 @@
1
+ #import <Foundation/Foundation.h>
2
+
3
+ @interface FlattenArrayExample : NSObject
4
+
5
+ + (NSArray*)flattenArray:(NSArray*) list;
6
+ @end
@@ -0,0 +1,48 @@
1
+ #import "FlattenArrayExample.h"
2
+ static NSMutableArray *resultArray;
3
+ static NSNull *nullValue;
4
+
5
+ @implementation FlattenArrayExample
6
+
7
+ + (NSArray*)flattenArray:(NSArray *)list{
8
+
9
+ resultArray = [NSMutableArray array];
10
+ nullValue = [NSNull null];
11
+ for(int i=0;i < list.count;i++){
12
+
13
+ if([list[i] isKindOfClass:[NSArray class]]){
14
+
15
+ [FlattenArrayExample extractValuesFromArray:list[i]];
16
+
17
+ }else{
18
+
19
+ if(list[i] != nullValue){
20
+
21
+ [resultArray addObject:list[i]];
22
+ }
23
+ }
24
+ }
25
+ return resultArray;
26
+ }
27
+
28
+
29
+ +(void)extractValuesFromArray:(NSArray*)array{
30
+
31
+ for(int i=0;i < array.count;i++){
32
+
33
+ if([array[i] isKindOfClass:[NSArray class]]){
34
+
35
+ [FlattenArrayExample extractValuesFromArray:array[i]];
36
+ }else{
37
+
38
+ if(array[i] != nullValue){
39
+
40
+ [resultArray addObject:array[i]];
41
+ }
42
+ }
43
+ }
44
+
45
+ }
46
+
47
+
48
+ @end
@@ -0,0 +1,110 @@
1
+ #import <XCTest/XCTest.h>
2
+
3
+ #if __has_include("FlattenArrayExample.h")
4
+ # import "FlattenArrayExample.h"
5
+ # else
6
+ # import "FlattenArray.h"
7
+ #endif
8
+
9
+ @interface FlattenArrayTest : XCTestCase
10
+
11
+ @end
12
+
13
+ @implementation FlattenArrayTest
14
+
15
+ - (void)testFlattenArrayWithJustIntegers {
16
+
17
+ NSArray *innerArray = [NSArray arrayWithObjects:[NSNumber numberWithInt:2],[NSNumber numberWithInt:3],[NSNumber numberWithInt:4],[NSNumber numberWithInt:5],[NSNumber numberWithInt:6],[NSNumber numberWithInt:7], nil];
18
+ NSArray *inputArray = [NSArray arrayWithObjects:[NSNumber numberWithInt:1],innerArray,[NSNumber numberWithInt:8], nil];
19
+ NSArray *expected = [NSArray arrayWithObjects:[NSNumber numberWithInt:1],[NSNumber numberWithInt:2],[NSNumber numberWithInt:3],[NSNumber numberWithInt:4],[NSNumber numberWithInt:5],[NSNumber numberWithInt:6],[NSNumber numberWithInt:7],[NSNumber numberWithInt:8], nil];
20
+ XCTAssertTrue([expected isEqualToArray:[FlattenArrayExample flattenArray:inputArray]]);
21
+
22
+
23
+ }
24
+
25
+ -(void)testFiveLevelNesting{
26
+
27
+ NSArray *innerArray5 = [NSArray arrayWithObject:[NSNumber numberWithInt:50]];
28
+ NSArray *innerArray4 = [NSArray arrayWithObject:innerArray5];
29
+ NSArray *innerArray3 = [NSArray arrayWithObject:innerArray4];
30
+ NSArray *innerArray2 = [NSArray arrayWithObjects:[NSNumber numberWithInt:2],[NSNumber numberWithInt:3], nil];
31
+ NSArray *innerArray1 = [NSArray arrayWithObjects:innerArray2,[NSNumber numberWithInt:8],[NSNumber numberWithInt:100],[NSNumber numberWithInt:4],innerArray3, nil];
32
+ NSArray *inputArray = [NSArray arrayWithObjects:[NSNumber numberWithInt:0],[NSNumber numberWithInt:2],innerArray1,[NSNumber numberWithInt:-2], nil];
33
+
34
+ NSArray *expected = [NSArray arrayWithObjects:[NSNumber numberWithInt:0],[NSNumber numberWithInt:2],[NSNumber numberWithInt:2],[NSNumber numberWithInt:3],[NSNumber numberWithInt:8],[NSNumber numberWithInt:100],[NSNumber numberWithInt:4],[NSNumber numberWithInt:50],[NSNumber numberWithInt:-2], nil];
35
+ XCTAssertTrue([expected isEqualToArray:[FlattenArrayExample flattenArray:inputArray]]);
36
+ }
37
+
38
+ -(void)testSixLevelNesting{
39
+
40
+ NSArray *innerArray6 = [NSArray arrayWithObject:[NSNumber numberWithInt:5]];
41
+ NSArray *innerArray5 = [NSArray arrayWithObject:innerArray6];
42
+ NSArray *innerArray4 = [NSArray arrayWithObjects:[NSNumber numberWithInt:4],innerArray5, nil];
43
+ NSArray *innerArray3 = [NSArray arrayWithObject:[NSNumber numberWithInt:3]];
44
+ NSArray *innerArray2 = [NSArray arrayWithObject:innerArray3];
45
+ NSArray *innerArray1 = [NSArray arrayWithObjects:[NSNumber numberWithInt:2],innerArray2,innerArray4,[NSNumber numberWithInt:6],[NSNumber numberWithInt:7], nil];
46
+ NSArray *inputArray = [NSArray arrayWithObjects:[NSNumber numberWithInt:1],innerArray1,[NSNumber numberWithInt:8], nil];
47
+ NSArray *expected = [NSArray arrayWithObjects:[NSNumber numberWithInt:1],[NSNumber numberWithInt:2],[NSNumber numberWithInt:3],[NSNumber numberWithInt:4],[NSNumber numberWithInt:5],[NSNumber numberWithInt:6],[NSNumber numberWithInt:7],[NSNumber numberWithInt:8], nil];
48
+ XCTAssertTrue([expected isEqualToArray:[FlattenArrayExample flattenArray:inputArray]]);
49
+ }
50
+
51
+ -(void)testSixLevelNestingWithNullValues{
52
+
53
+ NSNull *nullValue = [NSNull null];
54
+ NSArray *innerArray6 = [NSArray arrayWithObject:nullValue];
55
+ NSArray *innerArray5 = [NSArray arrayWithObject:innerArray6];
56
+ NSArray *innerArray4 = [NSArray arrayWithObject:[NSNumber numberWithInt:100]];
57
+ NSArray *innerArray3 = [NSArray arrayWithObject:innerArray4];
58
+ NSArray *innerArray2 = [NSArray arrayWithObjects:[NSNumber numberWithInt:2],[NSNumber numberWithInt:3], nil];
59
+ NSArray *innerArray1 = [NSArray arrayWithObjects:innerArray2,[NSNumber numberWithInt:8],innerArray3,nullValue,innerArray5, nil];
60
+ NSArray *inputArray = [NSArray arrayWithObjects:[NSNumber numberWithInt:0],[NSNumber numberWithInt:2],innerArray1,[NSNumber numberWithInt:-2], nil];
61
+ NSArray *expected = [NSArray arrayWithObjects:[NSNumber numberWithInt:0],[NSNumber numberWithInt:2],[NSNumber numberWithInt:2],[NSNumber numberWithInt:3],[NSNumber numberWithInt:8],[NSNumber numberWithInt:100],[NSNumber numberWithInt:-2], nil];
62
+ XCTAssertTrue([expected isEqualToArray:[FlattenArrayExample flattenArray:inputArray]]);
63
+
64
+ }
65
+
66
+ -(void)testAllValuesInNestedListAreNull{
67
+
68
+ NSNull *nullValue = [NSNull null];
69
+ NSArray *innerArray6 = [NSArray arrayWithObjects:nullValue,nullValue, nil];
70
+ NSArray *innerArray5 = [NSArray arrayWithObjects:innerArray6,nullValue, nil];
71
+ NSArray *innerArray4 = [NSArray arrayWithObject:nullValue];
72
+ NSArray *innerArray3 = [NSArray arrayWithObject:innerArray4];
73
+ NSArray *innerArray2 = [NSArray arrayWithObject:innerArray3];
74
+ NSArray *innerArray1 = [NSArray arrayWithObject:innerArray2];
75
+ NSArray *inputArray = [NSArray arrayWithObjects:nullValue,innerArray1,nullValue,nullValue,innerArray5,nullValue, nil];
76
+ NSArray *expected = @[];
77
+ XCTAssertTrue([expected isEqualToArray:[FlattenArrayExample flattenArray:inputArray]]);
78
+
79
+ }
80
+
81
+ -(void)testFiveLevelDeepNestedListWithDoubleValuesAndNullValues{
82
+
83
+ NSNull *nullValue = [NSNull null];
84
+ NSArray *innerArray5 = [NSArray arrayWithObject:nullValue];
85
+ NSArray *innerArray4 = [NSArray arrayWithObject:innerArray5];
86
+ NSArray *innerArray3 = [NSArray arrayWithObject:innerArray4];
87
+ NSArray *innerArray2 = [NSArray arrayWithObjects:[NSNumber numberWithDouble:2.00005],[NSNumber numberWithDouble:3.13], nil];
88
+ NSArray *innerArray1 = [NSArray arrayWithObjects:innerArray2,[NSNumber numberWithDouble:8.4],[NSNumber numberWithDouble:100],[NSNumber numberWithDouble:4.8],innerArray3, nil];
89
+ NSArray *inputArray = [NSArray arrayWithObjects:[NSNumber numberWithDouble:0.085],[NSNumber numberWithDouble:2.8844557],innerArray1,[NSNumber numberWithDouble:-2.5], nil];
90
+
91
+ NSArray *expected = [NSArray arrayWithObjects:[NSNumber numberWithDouble:0.085],[NSNumber numberWithDouble:2.8844557],[NSNumber numberWithDouble:2.00005],[NSNumber numberWithDouble:3.13],[NSNumber numberWithDouble:8.4],[NSNumber numberWithDouble:100],[NSNumber numberWithDouble:4.8],[NSNumber numberWithDouble:-2.5], nil];
92
+ XCTAssertTrue([expected isEqualToArray:[FlattenArrayExample flattenArray:inputArray]]);
93
+
94
+ }
95
+
96
+ -(void)testSixLevelDeepNestedListWithStringsAndNullValues{
97
+
98
+ NSNull *nullValue = [NSNull null];
99
+ NSArray *innerArray6 = [NSArray arrayWithObject:nullValue];
100
+ NSArray *innerArray5 = [NSArray arrayWithObject:innerArray6];
101
+ NSArray *innerArray4 = [NSArray arrayWithObject:@"One Hundred"];
102
+ NSArray *innerArray3 = [NSArray arrayWithObject:innerArray4];
103
+ NSArray *innerArray2 = [NSArray arrayWithObjects:@"Two",@"three", nil];
104
+ NSArray *innerArray1 = [NSArray arrayWithObjects:innerArray2,@"eight",innerArray3,nullValue,innerArray5, nil];
105
+ NSArray *inputArray = [NSArray arrayWithObjects:@"Zero",@"two",innerArray1,@"minus two", nil];
106
+ NSArray *expected = [NSArray arrayWithObjects:@"Zero",@"two",@"Two",@"three",@"eight",@"One Hundred",@"minus two", nil];
107
+ XCTAssertTrue([expected isEqualToArray:[FlattenArrayExample flattenArray:inputArray]]);
108
+
109
+ }
110
+ @end