Skip to content

Commit

Permalink
Iteration
Browse files Browse the repository at this point in the history
  • Loading branch information
Lee Smith committed Jan 22, 2011
1 parent 7618874 commit c0e1ef7
Showing 1 changed file with 12 additions and 12 deletions.
24 changes: 12 additions & 12 deletions about_iteration.rb
Expand Up @@ -12,7 +12,7 @@ def test_iterating_with_each
array.each do |item|
sum += item
end
assert_equal __, sum
assert_equal 6, sum
end

def test_each_can_use_curly_brace_blocks_too
Expand All @@ -21,7 +21,7 @@ def test_each_can_use_curly_brace_blocks_too
array.each { |item|
sum += item
}
assert_equal __, sum
assert_equal 6, sum
end

def test_break_works_with_each_style_iterations
Expand All @@ -31,42 +31,42 @@ def test_break_works_with_each_style_iterations
break if item > 3
sum += item
}
assert_equal __, sum
assert_equal 6, sum
end

def test_collect_transforms_elements_of_an_array
array = [1, 2, 3]
new_array = array.collect { |item| item + 10 }
assert_equal __, new_array
assert_equal [11, 12, 13], new_array

# NOTE: 'map' is another name for the 'collect' operation
another_array = array.map { |item| item + 10 }
assert_equal __, another_array
assert_equal [11, 12, 13], another_array
end

def test_select_selects_certain_items_from_an_array
array = [1, 2, 3, 4, 5, 6]

even_numbers = array.select { |item| (item % 2) == 0 }
assert_equal __, even_numbers
assert_equal [2, 4, 6], even_numbers

# NOTE: 'find_all' is another name for the 'select' operation
more_even_numbers = array.find_all { |item| (item % 2) == 0 }
assert_equal __, more_even_numbers
assert_equal [2, 4, 6], more_even_numbers
end

def test_find_locates_the_first_element_matching_a_criteria
array = ["Jim", "Bill", "Clarence", "Doug", "Eli"]

assert_equal __, array.find { |item| item.size > 4 }
assert_equal "Clarence", array.find { |item| item.size > 4 }
end

def test_inject_will_blow_your_mind
result = [2, 3, 4].inject(0) { |sum, item| sum + item }
assert_equal __, result
assert_equal 9, result

result2 = [2, 3, 4].inject(1) { |sum, item| sum * item }
assert_equal __, result2
assert_equal 24, result2

# Extra Credit:
# Describe in your own words what inject does.
Expand All @@ -75,12 +75,12 @@ def test_inject_will_blow_your_mind
def test_all_iteration_methods_work_on_any_collection_not_just_arrays
# Ranges act like a collection
result = (1..3).map { |item| item + 10 }
assert_equal __, result
assert_equal [11, 12, 13], result

# Files act like a collection of lines
File.open("example_file.txt") do |file|
upcase_lines = file.map { |line| line.strip.upcase }
assert_equal __, upcase_lines
assert_equal ['THIS', 'IS', 'A', 'TEST'], upcase_lines
end

# NOTE: You can create your own collections that work with each,
Expand Down

0 comments on commit c0e1ef7

Please sign in to comment.