[libcxx] r232390 - Don't attempt to validate the output of %p.
Ed Schouten
ed at nuxi.nl
Mon Mar 16 10:56:04 PDT 2015
Author: ed
Date: Mon Mar 16 12:56:04 2015
New Revision: 232390
URL: http://llvm.org/viewvc/llvm-project?rev=232390&view=rev
Log:
Don't attempt to validate the output of %p.
In one of the ostream tests we attempt to validate whether the output of
%p is correct. This is actually outside the scope of libc++, for the
%reason that the format of %p is implementation defined. Change the test
%to validate that the output of %p is non-empty and is different when
%given two unequal addresses.
Differential Revision: http://reviews.llvm.org/D8354
Reviewed by: marshall
Modified:
libcxx/trunk/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/pointer.pass.cpp
Modified: libcxx/trunk/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/pointer.pass.cpp
URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/pointer.pass.cpp?rev=232390&r1=232389&r2=232390&view=diff
==============================================================================
--- libcxx/trunk/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/pointer.pass.cpp (original)
+++ libcxx/trunk/test/std/input.output/iostream.format/output.streams/ostream.formatted/ostream.inserters.arithmetic/pointer.pass.cpp Mon Mar 16 12:56:04 2015
@@ -59,18 +59,27 @@ int main()
assert(os.fail());
}
{
- testbuf<char> sb;
- std::ostream os(&sb);
- const void* n = 0;
- os << n;
- assert(os.good());
- // %p is implementation defined.
- // On some platforms (Windows), it's a hex number without
- // any leading 0x like prefix.
- // In that format, we assume a null pointer will yield 2 '0' hex digits
- // for each 8 bits of address space.
- assert(sb.str() == "0x0" || sb.str() == "(nil)" ||
- sb.str() == std::string(sizeof(void*)*2,'0'));
+ testbuf<char> sb1;
+ std::ostream os1(&sb1);
+ int n1;
+ os1 << &n1;
+ assert(os1.good());
+ std::string s1(sb1.str());
+
+ testbuf<char> sb2;
+ std::ostream os2(&sb2);
+ int n2;
+ os2 << &n2;
+ assert(os2.good());
+ std::string s2(sb2.str());
+
+ // %p is implementation defined. Instead of validating the
+ // output, at least ensure that it does not generate an empty
+ // string. Also make sure that given two distinct addresses, the
+ // output of %p is different.
+ assert(!s1.empty());
+ assert(!s2.empty());
+ assert(s1 != s2);
}
{
testbuf<char> sb;
More information about the cfe-commits
mailing list