Forum: Ruby PrettyPrint Array ?

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
Christer N. (Guest)
on 2005-12-04 15:50
I'm trying to make my own simple assert, but have problem displaying
  assert "123", [1,2,[3]].to_s

Is there a method or function x, fullfilling these requirements
  assert "[1,2,[3]]", [1,2,[3]].x
  assert "[1,2,[3]]", x([1,2,[3]])
  assert "1", x(1)
  assert "a", x("a")
or some of them?

There is no problem with the comparison as
  assert [1,2,[3]], [1,2,[3]]

The problem appears when displaying different values:
  assert [1,2,[3]], [1,2,3]

expect: 123
actual: 123

which is not very helpful.

This is the definition of my assert:

def assert(expect, actual)
 expect==actual ? print(".") : print("\nexpect: #{expect}\nactual:

This is probably very easy, but I haven't found anything.

m.fellinger (Guest)
on 2005-12-04 16:13
(Received via mailing list)
Hey Christer,

try [1,2,[3]].flatten.to_s

it solves this one:
assert [1,2,3], [1,2,[3]].flatten
and probably is the easiest solution :)

however - assert not only compares and checks strings - you can use it
for all
other Objects as well... so "123", [1,2,[3]].to_s looks to me not that
obvious - but i don't know your approach and what this array should do -
sending out this advice and waiting for the pros to comment your post ^^


Am Sonntag, 4. Dezember 2005 14:50 schrieb Christer N.:
rosco (Guest)
on 2005-12-04 19:29
(Received via mailing list)
On Sun, 04 Dec 2005 13:50:34 -0000, Christer N.
<removed_email_address@domain.invalid> wrote:

> actual: 123
> ..
> which is not very helpful.

I'm not sure if this is what you're after, but if it's just about the
displayed values try:

	def assert(expect, actual)
	  print (expect == actual ? "." : "\nexpect #{expect.inspect}\nactual:

which yields:

	irb(main):029:0> assert([1,[2,3]], [1,2,3])

	expect [1, [2, 3]]
	actual: [1, 2, 3]
	=> nil

Is that what you're after?
Christer N. (Guest)
on 2005-12-05 01:04
Fellinger wrote:
> try [1,2,[3]].flatten.to_s

No, I do not want to hide the difference.

rosco wrote:
> 	def assert(expect, actual)
> 	  print (expect == actual ? "." : "\nexpect #{expect.inspect}\nactual:
> #{actual.inspect}\n")
> 	end

Yes, "inspect" is exactly what I needed! Thank you very much!

This topic is locked and can not be replied to.