Forum: Ruby PrettyPrint Array ?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Af95bdaf87958c40150b813e94381bfd?d=identicon&s=25 Christer Nilsson (christer)
on 2005-12-04 14:50
I'm trying to make my own simple assert, but have problem displaying
arrays.
  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:
#{actual}\n")
end

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

Christer
86e33dee4a89a8879a26487051c216a8?d=identicon&s=25 m.fellinger (Guest)
on 2005-12-04 15: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 ^^

MfG
manveru

Am Sonntag, 4. Dezember 2005 14:50 schrieb Christer Nilsson:
82e62c756d89bc6fa0a0a2d7f2b1e617?d=identicon&s=25 rosco (Guest)
on 2005-12-04 18:29
(Received via mailing list)
On Sun, 04 Dec 2005 13:50:34 -0000, Christer Nilsson
<janchrister.nilsson@gmail.com> 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:
#{actual.inspect}\n")
	end

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?
Af95bdaf87958c40150b813e94381bfd?d=identicon&s=25 Christer Nilsson (christer)
on 2005-12-05 00: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!

Christer
This topic is locked and can not be replied to.