From 8806dfd0570c4a92e4b676ad9be0573711ed6cfb Mon Sep 17 00:00:00 2001 From: Michael Lotz Date: Mon, 1 Feb 2010 13:39:06 +0000 Subject: [PATCH] Adding test that shows that B_TRUNCATE_BEGINNING mode is essentially broken. Worse yet for a small enough length it actually crashes. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35379 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/tests/kits/interface/Jamfile | 5 ++ src/tests/kits/interface/TruncateString.cpp | 65 +++++++++++++++++++++ 2 files changed, 70 insertions(+) create mode 100644 src/tests/kits/interface/TruncateString.cpp diff --git a/src/tests/kits/interface/Jamfile b/src/tests/kits/interface/Jamfile index 3536c2e12d..b0da764f0c 100644 --- a/src/tests/kits/interface/Jamfile +++ b/src/tests/kits/interface/Jamfile @@ -117,6 +117,11 @@ SimpleTest SliderTest : : be $(TARGET_LIBSUPC++) ; +SimpleTest TruncateString : + TruncateString.cpp + : be $(TARGET_LIBSUPC++) + ; + SimpleTest MenuBeginningTest : MenuBeginningTest.cpp : be $(TARGET_LIBSUPC++) diff --git a/src/tests/kits/interface/TruncateString.cpp b/src/tests/kits/interface/TruncateString.cpp new file mode 100644 index 0000000000..e6e2895429 --- /dev/null +++ b/src/tests/kits/interface/TruncateString.cpp @@ -0,0 +1,65 @@ +#include +#include + +#include +#include +#include +#include + + +class TruncateView : public BView { +public: + TruncateView(BRect frame) + : BView(frame, "TruncateView", B_FOLLOW_ALL, B_WILL_DRAW) + { + } + + void Draw(BRect updateRect) + { + const float kSpacing = 20.0; + const float kTopOffset = kSpacing + 5; + const uint32 kTruncateModes[] + = { B_TRUNCATE_BEGINNING, B_TRUNCATE_MIDDLE, B_TRUNCATE_END }; + const uint32 kTruncateModeCount + = sizeof(kTruncateModes) / sizeof(kTruncateModes[0]); + + BString theString("ö-ä-ü"); + BPoint point(10, kTopOffset); + BString truncated; + + for (float length = 25; length < 50; length += 5) { + SetHighColor(255, 0, 0); + StrokeRect(BRect(point.x, point.y - kSpacing, point.x + length, + point.y + kSpacing * (kTruncateModeCount - 1))); + SetHighColor(0, 0, 0); + + for (uint32 i = 0; i < kTruncateModeCount; i++) { + truncated = theString; + TruncateString(&truncated, kTruncateModes[i], length); + DrawString(truncated.String(), point); + point.y += kSpacing; + } + + point.x += length + kSpacing; + point.y = kTopOffset; + } + } +}; + + +int +main(int argc, char *argv[]) +{ + BApplication app("application/x-vnd.Haiku-TruncateString"); + + BRect frame(200, 200, 600, 400); + BWindow *window = new BWindow(frame, "TruncateString", B_TITLED_WINDOW, + B_QUIT_ON_WINDOW_CLOSE); + + TruncateView *view = new TruncateView(frame.OffsetToSelf(0, 0)); + window->AddChild(view); + + window->Show(); + app.Run(); + return 0; +}