Pietro Gagliardi
ff803bf792
And implemented 128-bit muldiv on Windows.
2019-05-05 11:03:17 -04:00
Pietro Gagliardi
288c74b026
Implemented the new MulDiv128 stuff on macOS. To make things easier in regards to signedness, this implementation also uses a base, like the Unix one, and the mach_timebase_info() conversion is done in timerMonotonicTime() instead. (Also added the admittedly-redundant-since-the-current(ish)-implementation-cannot-fail error check to mach_timebase_info().) As a result, timerTimeSub() can now be end - start on all platforms. Also found and fixed bugs in the actual muldiv128 algorithm implementation. Next up: Windows.
2019-05-05 03:17:11 -04:00
Pietro Gagliardi
952b36b1c2
Added proper 128-bit muldiv() stuff for macOS and Windows. Will actually use them next. Also fixed compiling on non-Windows.
2019-05-05 02:17:11 -04:00
Pietro Gagliardi
ee3e587ddc
Fixed build errors on Windows.
2019-05-04 21:47:04 -04:00
Pietro Gagliardi
98093ed46e
Formatted test results across multiple lines in the same way as in Go. Also prettyprinted diffs in initmain.c.
2019-05-04 21:13:47 -04:00
Pietro Gagliardi
4c097f93f7
Implemented error checks in test/initmain.c.
2019-05-04 19:21:57 -04:00
Pietro Gagliardi
09e98af110
Removed a stale TODO caused by inaccurate timer code (that was in response to the old clock()-based Unix code).
2019-05-04 19:04:32 -04:00
Pietro Gagliardi
00411a4d07
Moved all the test infrasturcture files into a subdirectory of test/ called lib/.
2019-05-04 16:53:54 -04:00
Pietro Gagliardi
57abc83fe3
And split all the thread stuff into their own file. Almost done with all this test library cleanup!
2019-05-04 16:47:56 -04:00
Pietro Gagliardi
89e882c4a8
And fixed build errors on non-macOS systems. We're good!
2019-05-04 14:44:29 -04:00
Pietro Gagliardi
bfd608cf8e
And of course setitimer() doesn't allow us to override the struct sigvalue, so we can't chain out to outer SIGALRM calls. Hooray for global state!
2019-05-04 14:31:33 -04:00
Pietro Gagliardi
5836a2a236
Ugh, macOS doesn't support timer_create() and friends :| (Even up to 10.13, it seems; not sure about 10.14!) Switch back to setitimer(). Also rename oldsig to prevSig and remove a needless (for now???) cast.
2019-05-04 14:24:22 -04:00
Pietro Gagliardi
8655bbf19c
Finished porting over the timer functions from testing_darwinunix.c to timer_darwinunix.c. This also includes changing timerRunWIthTimeout() from using setitimer() to using timer_create() and friends, and removing the fallbacks from timerSleep().
...
Also fixed a possible incorrect use of TlsSetValue() in the Windows code that I spotted while writing an intermediate version of the Unix code.
2019-05-04 12:13:07 -04:00
Pietro Gagliardi
6a25efce63
Started writing the new timer_darwinunix.c file; implemented the monotonic time functions for now. On non-macOS, we now require clock_gettime() to be successful, as GLib also does (at least as far back as the version that ships with Ubuntu 14.04); we also gather the time at first call and use that as the basis for returning a single integer from timerMonotonicNow(), so timerTimeSub() is a simple subtraction now. The logic for this conversion is based on the logic of timevalsub() in macOS's sys/time.h, though this is really simple to understand.
2019-05-03 23:03:38 -04:00
Pietro Gagliardi
e9fd8cc878
And made timerRunWithTimeout() use the non-reentrant code on all architectures. Windows code done.
2019-05-03 10:41:27 -04:00
Pietro Gagliardi
020cabc61e
Fixed build issues. Now to fix runtime issues: we'll have to use reentrancy everywhere, because rcx is clobbered by GetMessage().
2019-05-03 10:32:31 -04:00
Pietro Gagliardi
dbfea28313
And finished adjusting the tests accordingly. Now to test.
2019-05-03 02:02:20 -04:00
Pietro Gagliardi
e2baa5bb5c
And finished rewriting timerRunWithTimeout() on Windows, including reentrancy improvements, race condition elimination, setjmp() volatility correctness fixes, and global state reduction.
2019-05-03 01:54:26 -04:00
Pietro Gagliardi
8b5b03794c
Started moving testingRunWithTimeout() into timer.h.
2019-05-02 23:15:49 -04:00
Pietro Gagliardi
313f5864f5
Fixed the timer functions on Windows.
2019-05-02 22:03:57 -04:00
Pietro Gagliardi
42623f92e9
And started breaking apart the timer functions.
2019-05-02 12:38:59 -04:00
Pietro Gagliardi
5537e823ef
Started splitting out the timer stuff into its own mini-library. Also I decided to drop the fallback stuff, since we run on new enough systems anyway, and nanosleep() is available on every version of macOS we need anyway.
2019-05-02 12:14:08 -04:00
Pietro Gagliardi
99a0f9084c
Fixed building on Ubuntu Trusty.
2019-05-02 02:01:42 -04:00
Pietro Gagliardi
796a9cf010
Resolved some TODOs in testing_darwinunix.c, including writing a more elaborate implementation of testingSleep().
2019-04-30 21:00:52 -04:00
Pietro Gagliardi
7d29c4346d
Decided not to make the thread functions report errors to the testingT object; I'm still not a big fan of the thread model here, but I'd like to actually split the thread functions out of the testing library entirely, since they are only used for the tests in initmain.c.
2019-04-30 13:15:36 -04:00
Pietro Gagliardi
25d4021269
Resolved timer/duration variable name TODO.
2019-04-30 09:32:48 -04:00
Pietro Gagliardi
965dec0157
Settled the PostThreadMessage() TODOs in the Windows testing code.
2019-04-30 02:31:08 -04:00
Pietro Gagliardi
848c3813ee
Cleaned up the error handling in the Windows testing code by also creating HRESULT functions for whatever it calls. This resolves a bunch of the TODOs in that file.
2019-04-30 01:18:48 -04:00
Pietro Gagliardi
db6b6fd97b
Provided a mechanism for the testing library to abort on an internal error; redefined memory allocation to do so. This will also be used for resolving many of the TODOs on the Windows testing code.
2019-04-29 23:46:08 -04:00
Pietro Gagliardi
05af10aade
Added ARM64 to the CPU-specific Windows testing code.
2019-04-29 22:34:28 -04:00
Pietro Gagliardi
2282ee2cf8
Removed TODOs about overflow; we really can't handle overflow properly anyway, so eh.
2019-04-29 00:18:26 -04:00
Pietro Gagliardi
f948c30a3b
Simplified testingTimerNsec() on Windows. _div128() would make this super simple, but that's only available on VS2019, and it seems no one has implemented this in software elsewhere (the most I can find are unsigned ones...).
2019-04-28 23:20:01 -04:00
Pietro Gagliardi
3257710fb7
Fixed bad timers on GTK+ tests. Turns out that clock() doesn't count when the process isn't actively running code (for instance, if it's waiting for I/O) :|
2019-04-28 21:49:54 -04:00
Pietro Gagliardi
74468bb38f
And implemented the multithreading stuff on Unix and Darwin. We can finally continue re-adding stuff to libui!
2019-04-28 21:22:11 -04:00
Pietro Gagliardi
df8eadb980
And added the multithreaded uiQueueMain() tests.
2019-04-28 20:45:53 -04:00
Pietro Gagliardi
6c41fb712e
More notes.
2019-04-28 19:11:52 -04:00
Pietro Gagliardi
74ca863c1b
More TODOs.
2019-04-28 19:07:41 -04:00
Pietro Gagliardi
5fb4e4403e
And implemented testingRunWithTimeout() on Windows. All tests currently pass on all platforms! Woo!
2019-04-28 19:04:27 -04:00
Pietro Gagliardi
8ffb2b1b1e
Fixed build warnings and errors. Now we just need to implement testingRunWithTimeout() on Windows.
2019-04-28 16:35:25 -04:00
Pietro Gagliardi
49bde22f81
More TODOs.
2019-04-28 14:54:33 -04:00
Pietro Gagliardi
bdf80516c5
Reimplemented uiMain() and friends on GTK+.
2019-04-28 14:52:39 -04:00
Pietro Gagliardi
b20bf2d1c9
Wrote TestQueueMain_Sequence.
2019-04-28 14:41:30 -04:00
Pietro Gagliardi
e03021a350
Piped the actual file/line through to testingRunWithTimeout().
2019-04-28 13:26:15 -04:00
Pietro Gagliardi
64478bd5b0
Finished cleaning up the TimerNsec naming wonk.
2019-04-28 13:19:04 -04:00
Pietro Gagliardi
1bc2297597
Added a facility to do timeouts in test functions. Also started cleaning up the weird TimerNsec abstractions.
2019-04-28 13:12:40 -04:00
Pietro Gagliardi
9c70782a0f
Added uiMain() and friends on macOS and refined the tests. So now we'll need to add a timeout mechanism because that sendEvent: stuff really is still neeeded and I'd like to prevent shenanigans later.
2019-04-28 11:48:21 -04:00
Pietro Gagliardi
aa49da98ba
And implemented testingTimer on Windows.
2019-04-23 22:49:28 -04:00
Pietro Gagliardi
7e631879e7
Wrote the Unix clock function. It's primitive, but it works.
2019-04-23 12:26:52 -04:00
Pietro Gagliardi
4bd1ba2fa5
Oops; flipped a boolean.
2019-04-22 23:03:12 -04:00
Pietro Gagliardi
bd1ca240e3
Added timers to the testing framework, test timing (so no more of those pesky TODOs), and the OS X implementation of test timing.
2019-04-22 23:01:55 -04:00
Pietro Gagliardi
23591eeefa
Executive decision: drop uiUnint(). This was really more for double-checking *my* work, mostly with regards to memory management, and we could probably do that in the test suite instead, or even with AddressSanitizer.
2019-04-21 20:59:36 -04:00
Pietro Gagliardi
80ca6e2fc1
More notes.
2019-04-21 18:00:38 -04:00
Pietro Gagliardi
63952a3e20
ANd integrated the test manifest back into the tester.
2019-04-21 17:59:29 -04:00
Pietro Gagliardi
b8b3b3df39
Fixed the rest of the build errors and warnings. Woo! Now for the manifests.
2019-04-21 17:28:47 -04:00
Pietro Gagliardi
f7867f3427
ALMOST fixed the build on Windows with MSVC. (For the change to test/testing.h: Even in VS2019 inline isn't available in C, ugh. That function doesn't need to be inline anyway, so eh.)
2019-04-21 15:08:09 -04:00
Pietro Gagliardi
484989e925
Implemented uiInit() on macOS. The tests work so far!
2019-04-20 21:38:26 -04:00
Pietro Gagliardi
5e45afd0a2
More TODOs.
2019-04-19 12:13:08 -04:00
Pietro Gagliardi
6f3d45b107
Made it so that normal and after tests don't run if before tests failed.
2019-04-19 12:12:13 -04:00
Pietro Gagliardi
da36b304f8
Wrote the uiInit() test.
2019-04-19 12:10:45 -04:00
Pietro Gagliardi
e5e60284fb
More desirable sorting of tests: by line number per file, specifically. Also per-file, but that can remain unguaranteed if I ever spin this out into its own library.
2019-04-17 22:58:44 -04:00
Pietro Gagliardi
16c6425200
Reorganized test sets into growing arrays. We can sort them next.
2019-04-17 22:12:32 -04:00
Pietro Gagliardi
dcf34e6dab
Set up the necessary work for having the list of tests sort by filename/line number instead of init order.
2019-04-17 21:49:47 -04:00
Pietro Gagliardi
59b449b920
Added rudimentary test ordering, for the Init and Uninit tests.
2019-04-10 20:17:40 -04:00
Pietro Gagliardi
1b046e763b
Fixed the test suite.
2019-04-10 20:11:44 -04:00
Pietro Gagliardi
4f381d04a1
Added some test cases and the build script.
2019-04-10 14:42:17 -04:00
Pietro Gagliardi
759d6d1e46
Allowed deferred functions to access the testingT. If they call FailNow, we act as if nothing happens and the defers keep running.
2019-04-10 14:27:21 -04:00
Pietro Gagliardi
0149639edc
Cleaned things up a bit for libui's test suite.
2019-04-10 14:19:17 -04:00
Pietro Gagliardi
b26e0677af
Okay, I'm not satisfied with the other testing frameworks, so strip testing.h down to just what libui needs.
2019-04-10 13:23:25 -04:00
Pietro Gagliardi
ced0820e39
Undo that; this is probably overkill for libui's unit tests...
2019-04-10 12:55:37 -04:00
Pietro Gagliardi
5a0477d46d
Moved the testing files back here since we're actually going to start writing proper unit tests now.
2019-04-10 12:18:08 -04:00
Pietro Gagliardi
992d8694a9
Let's start the remodel. Move almost everything out of the way.
2019-04-08 20:36:21 -04:00
Pietro Gagliardi
f7907f38c6
Decided to just deal with the name tester instead of test for now. It's not that important to block merging.
2019-03-31 11:09:16 -04:00
Pietro Gagliardi
ff3d39213e
Decided to just build everything by default and not have separate all or examples targets since we don't really have much control over what's a top-level target anyway (and ninja on its own == ninja all). Also set layout to flat by default, since it keeps everything together, which will lead to less surprising behavior on Windows and is more useful for our release packages.
2019-03-31 11:04:20 -04:00
Pietro Gagliardi
81e25f76f2
Moved the binary PIC as a TODO and marked merge blockers as MESONTODO. Also removed a stale cmake-era TODO, because the manifest distribution idea it had will eventually be part of the uires tool.
2019-03-27 21:34:09 -04:00
Pietro Gagliardi
99f2b8f5ad
And settled test/CMakeLists.txt; nothing there that needed to be moved.
2019-03-27 01:07:03 -04:00
Pietro Gagliardi
1b9250e41e
Removed include_directories hackery, as suggested by various people in freenode #mesonbuild.
2019-03-25 20:07:22 -04:00
Pietro Gagliardi
467a9102ec
Fixed static builds on all platforms. So close to getting all this set up!
2019-03-24 14:11:02 -04:00
Pietro Gagliardi
2be9a4f3a3
Added the initial Windows meson.build. Windows Meson is having problems running, so we'll have to test this later.
2019-03-23 22:28:17 -04:00
Pietro Gagliardi
cdd997b6f6
Added tester build file and made sure everything works. It works!
2019-03-23 18:12:33 -04:00
Pietro Gagliardi
abeb0144d4
Changed the image generator for the tester to print the premultiplied RGBA byte stream instead of uint32_ts; regenerated images.c.
2018-08-29 19:58:35 -04:00
Pietro Gagliardi
095e63d522
Fixed memory leaks in the tester and a symbol name flub in OS X's image.m.
2018-07-08 21:20:42 -04:00
Pietro Gagliardi
fb67c429d8
Made background color columns only settable at creation time; added a uiTableParams struct for the purpose. This should end edits to uitable.h for now (until we're ready to document it). Now to just clean up all the implementations.
2018-06-24 10:28:41 -04:00
Pietro Gagliardi
9a79eed2ac
Final cleanup, first part: renamed uiTableData to uiTableValue.
2018-06-23 20:19:30 -04:00
Pietro Gagliardi
0a6a781be7
And implemented row background colors and button clicks. OS X implementation done for now!
2018-06-04 22:14:05 -04:00
Pietro Gagliardi
8c611cf95d
And added the rest of the column types to the tester.
2018-06-04 20:13:35 -04:00
Pietro Gagliardi
3bb050777b
Started converting the test program. First column works fine, second segfaults.
2018-06-03 23:23:48 -04:00
Pietro Gagliardi
374eed7432
Removed the facilities for printing an int as text; this was causing the tester to crash in a weird way on OS X (through NSApplication _crashOnException: without telling me what that exception was) and I didn't intend on this part type to be used in this way anyway...
2018-05-29 20:27:31 -04:00
Ben Campbell
fc2ea17bb8
Add minimal uiTable implementation for windows
...
This uses the win32 common controls listview to implement uiTable.
There are limitations:
- It supports only a single TextPart per column.
- ImagePart, CheckboxPart and ProgessBarPart are not implemented.
- There is no support for cell coloring.
- Cell editing is not implemented.
Some of these will be very hard to support using the standard
common control listview, and probably require an entire custom
listview.
2018-05-22 20:41:49 +12:00
Pietro Gagliardi
ae2eea7975
Merge branch 'master' into table
...
Long-overdue sync.
2018-04-18 10:00:13 -04:00
Pietro Gagliardi
3e76d799b1
Fixed leftovers from utflib-and-attrstr that broke builds of things I didn't fully update yet, since people want to build them anyway (for testing in a CI environment, I suppose; a real unit test suite would be better for this, though, which is one of the reasons for the _future/unittest stuff...)
...
Updates #302 .
2018-03-20 01:58:34 -04:00
Pietro Gagliardi
f7121774e1
Added some TODOs and started the work necessary for the Windows text system migration... which is gonna hurt.
2017-01-17 23:25:26 -05:00
Pietro Gagliardi
18b103c988
Fully reintegrated the table code.
2016-11-27 17:44:52 -05:00
Pietro Gagliardi
52d88d3f36
Re-added the table code. Need to patch together everything else, but.
2016-11-27 17:36:11 -05:00
Pietro Gagliardi
e3dec183aa
Started the process of splitting the table code into a separate branch.
2016-11-27 17:34:40 -05:00
Pietro Gagliardi
1fbfc9dd67
More TODOs.
2016-10-25 01:00:18 -04:00
Pietro Gagliardi
22caa5e502
Implemented the window drag stuff on GTK+. It works!
2016-10-25 00:34:12 -04:00
Pietro Gagliardi
67ff2fa855
Laid out the interface for user window drags.
2016-10-24 23:35:18 -04:00
Pietro Gagliardi
1871f7139d
Some more test areas in the borderless resize test. Now to actually spec out the API (hint: it's two functions in uiArea).
2016-10-24 23:27:44 -04:00
Pietro Gagliardi
8556fc7cd1
Started work on custom user resizes.
2016-10-24 23:08:55 -04:00
Pietro Gagliardi
fc243aed00
Cleaned up debugging code and added the main loop bugfix to the README.
2016-10-24 17:47:23 -04:00