[haiku-commits] r35379 - haiku/trunk/src/tests/kits/interface

  • From: mmlr@xxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 1 Feb 2010 14:39:06 +0100 (CET)

Author: mmlr
Date: 2010-02-01 14:39:06 +0100 (Mon, 01 Feb 2010)
New Revision: 35379
Changeset: http://dev.haiku-os.org/changeset/35379/haiku

Added:
   haiku/trunk/src/tests/kits/interface/TruncateString.cpp
Modified:
   haiku/trunk/src/tests/kits/interface/Jamfile
Log:
Adding test that shows that B_TRUNCATE_BEGINNING mode is essentially broken.
Worse yet for a small enough length it actually crashes.


Modified: haiku/trunk/src/tests/kits/interface/Jamfile
===================================================================
--- haiku/trunk/src/tests/kits/interface/Jamfile        2010-02-01 12:58:43 UTC 
(rev 35378)
+++ haiku/trunk/src/tests/kits/interface/Jamfile        2010-02-01 13:39:06 UTC 
(rev 35379)
@@ -117,6 +117,11 @@
        : be $(TARGET_LIBSUPC++)
        ;
 
+SimpleTest TruncateString :
+       TruncateString.cpp
+       : be $(TARGET_LIBSUPC++)
+       ;
+
 SimpleTest MenuBeginningTest :
        MenuBeginningTest.cpp
        : be $(TARGET_LIBSUPC++)

Added: haiku/trunk/src/tests/kits/interface/TruncateString.cpp
===================================================================
--- haiku/trunk/src/tests/kits/interface/TruncateString.cpp                     
        (rev 0)
+++ haiku/trunk/src/tests/kits/interface/TruncateString.cpp     2010-02-01 
13:39:06 UTC (rev 35379)
@@ -0,0 +1,65 @@
+#include <stdio.h>
+#include <SupportDefs.h>
+
+#include <Application.h>
+#include <String.h>
+#include <View.h>
+#include <Window.h>
+
+
+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;
+}


Other related posts:

  • » [haiku-commits] r35379 - haiku/trunk/src/tests/kits/interface - mmlr