Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 22 additions & 5 deletions lib/array_equals.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,22 @@
# Determines if the two input arrays have the same count of elements
# and the same integer values in the same exact order
def array_equals(array1, array2)
raise NotImplementedError
end

def array_equals(first_array, second_array)

if second_array.nil? && first_array.nil?
return true
elsif first_array.nil? || second_array.nil?
return false
end

if first_array.length != second_array.length
return false
end

flag = 0
first_array.each.each_with_index do |value, index|
if value != second_array[index]
flag += 1

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of incrementing flag, why not just return false.

end
end

flag > 0 ? false : true
end
35 changes: 18 additions & 17 deletions test/array_equals_test.rb
Original file line number Diff line number Diff line change
@@ -1,71 +1,72 @@
require 'minitest/autorun'
require 'minitest/reporters'
require_relative '../lib/array_equals'
require 'minitest/pride'

describe "array equals" do
describe "basic tests" do
it "arrays are equal" do
array1 = [10, 20, 30, 40, 50, 60]
array2 = [10, 20, 30, 40, 50, 60]

array_equals(array1, array2).must_equal true
end

it "arrays not equal: first six elements are same" do
array1 = [10, 20, 30, 40, 50, 60]
array2 = [10, 20, 30, 40, 50, 60, 70]

array_equals(array1, array2).must_equal false
end

it "arrays not equal: same count of elements" do
array1 = [10, 20, 30, 40, 50, 60]
array2 = [20, 3, 50, 10, 68, 74]

array_equals(array1, array2).must_equal false
end
end

describe "edge cases" do
it "arrays are empty: equal" do
array1 = []
array2 = []

array_equals(array1, array2).must_equal true
end

it "only first array is empty: not equal" do
array1 = []
array2 = [50, 30]

array_equals(array1, array2).must_equal false
end

it "only second array is empty: not equal" do
array1 = [20]
array2 = []

array_equals(array1, array2).must_equal false
end

it "arrays are nil: equal" do
array1 = nil
array2 = nil

array_equals(array1, array2).must_equal true
end

it "only first array is nil: not equal" do
array1 = nil
array2 = [10, 20]

array_equals(array1, array2).must_equal false
end

it "only second array is nil: not equal" do
array1 = [20]
array2 = nil

array_equals(array1, array2).must_equal false
end
end
Expand Down