summaryrefslogtreecommitdiff
path: root/AK/test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'AK/test.cpp')
-rw-r--r--AK/test.cpp304
1 files changed, 0 insertions, 304 deletions
diff --git a/AK/test.cpp b/AK/test.cpp
deleted file mode 100644
index 761d817147..0000000000
--- a/AK/test.cpp
+++ /dev/null
@@ -1,304 +0,0 @@
-#include "AKString.h"
-//#include "StringBuilder.h"
-#include "Vector.h"
-#include <stdio.h>
-#include "HashTable.h"
-#include "SinglyLinkedList.h"
-#include "HashMap.h"
-#include "TemporaryFile.h"
-#include "Buffer.h"
-#include "Weakable.h"
-#include "WeakPtr.h"
-#include "CircularQueue.h"
-#include "FileSystemPath.h"
-#include "Lock.h"
-
-static void test_weak_ptr();
-
-void log_locked() { }
-void log_unlocked() { }
-
-int main(int c, char** v)
-{
- StringImpl::initialize_globals();
-
- {
- Lock lock;
- Locker locker(lock);
- }
-
- {
- const char* testpath = "/proc/../proc/1/../../proc/1/vm";
- if (c == 2)
- testpath = v[1];
- FileSystemPath p(testpath);
- if (p.string().is_null())
- printf("canonicalized path is null\n");
- else
- printf("%s\n", p.string().characters());
- return 0;
- }
-
- {
- struct entry {
- String s;
- };
-
- HashMap<unsigned, entry> tab;
- tab.set(1, { "one" });
- tab.set(2, { "two" });
- tab.set(3, { "three" });
- tab.set(4, { "four" });
- tab.remove(1);
- tab.remove(2);
- tab.remove(3);
- for (auto& it : tab) {
- printf("%s\n", it.value.s.characters());
- }
- }
-
- {
- CircularQueue<int, 4> queue;
- queue.dump();
- queue.enqueue(1);
- queue.dump();
- queue.enqueue(2);
- queue.dump();
- queue.enqueue(3);
- queue.dump();
- queue.enqueue(4);
- ASSERT(!queue.is_empty());
- ASSERT(queue.size() == 4);
- ASSERT(queue.dequeue() == 1);
- queue.dump();
- ASSERT(queue.dequeue() == 2);
- queue.dump();
- ASSERT(queue.dequeue() == 3);
- queue.dump();
- ASSERT(queue.dequeue() == 4);
- queue.dump();
- ASSERT(queue.is_empty());
- queue.enqueue(1);
- queue.enqueue(2);
- queue.enqueue(3);
- queue.enqueue(4);
- queue.enqueue(5);
- queue.enqueue(6);
- queue.enqueue(7);
- ASSERT(queue.dequeue() == 4);
- ASSERT(queue.dequeue() == 5);
- ASSERT(queue.dequeue() == 6);
- ASSERT(queue.dequeue() == 7);
- ASSERT(queue.is_empty());
- }
-
- {
- String path = "/////abc/def////g/h/i//";
- auto parts = path.split('/');
- for (auto& part : parts)
- printf("<%s>\n", part.characters());
- }
- {
- String cmd = "cd";
- auto parts = cmd.split(' ');
- for (auto& part : parts)
- printf("<%s>\n", part.characters());
- }
-
- String empty = "";
-
- char* buffer;
- auto test = StringImpl::create_uninitialized(3, buffer);
- auto hello = String("hello");
- auto Hello = String("Hello");
-
- printf("hello: '%s'\n", hello.characters());
- printf("Hello: '%s'\n", Hello.characters());
- printf("'Hello'.lower(): '%s'\n", Hello.to_lowercase().characters());
- printf("'hello'.upper(): '%s'\n", Hello.to_uppercase().characters());
-
- Vector<String> strings;
- strings.append("a");
- strings.append("b");
- strings.append("c");
- strings.append("d");
- strings.append("e");
- strings.append("f");
- strings.append("g");
-
- auto g = strings.take_last();
-
- for (unsigned i = 0; i < strings.size(); ++i) {
- printf("[%u]: '%s'\n", i, strings[i].characters());
- }
-
- printf("snodde sista: '%s'\n", g.characters());
- printf("kvar:\n");
-
- for (auto& s : strings) {
- printf(" > %s\n", s.characters());
- }
-
-#if 0
- StringBuilder builder;
- builder.append("HEJ");
- builder.append(' ');
- builder.append("KAJ");
-
- printf("byggd: '%s'\n", builder.build().characters());
-#endif
-
-#if 1
- HashTable<int> ints;
- ints.set(10);
- ints.set(20);
- ints.set(30);
- ints.dump();
-
- ASSERT(ints.size() == 3);
- ASSERT(ints.contains(10));
- ASSERT(ints.contains(20));
- ASSERT(ints.contains(30));
- ASSERT(!ints.contains(0));
- ASSERT(!ints.contains(40));
-
- HashTable<String> sss;
- sss.set("foo");
- sss.set("bar");
- sss.set("baz");
- sss.set("bee");
- ASSERT(sss.size() == 4);
- sss.dump();
- ASSERT(sss.contains("foo"));
- ASSERT(sss.contains("bar"));
- ASSERT(sss.contains("baz"));
- ASSERT(sss.contains("bee"));
- ASSERT(!sss.contains("boo"));
- ASSERT(!sss.contains(""));
- ASSERT(!sss.contains(String()));
-
- printf(">>> iterate Hash:\n");
- for (auto& s : sss) {
- printf("+ %s\n", s.characters());
- }
- printf("<<<\n");
-#endif
-
- SinglyLinkedList<int> list;
- list.append(3);
- list.append(6);
- list.append(9);
- ASSERT(!list.is_empty());
- ASSERT(list.first() == 3);
- ASSERT(list.last() == 9);
-
- for (int i : list) {
- printf("Iterated to %d\n", i);
- }
-
- HashMap<String, int> map;
- map.set("lol", 100);
- map.set("kek", 500);
- map.set("zoo", 300);
- ASSERT(map.size() == 3);
- map.dump();
- for (auto& it : map) {
- printf("[%s] := %d\n", it.key.characters(), it.value);
- }
-
- auto found = map.find("kek");
- if (found != map.end()) {
- printf("found 'kek', key: %s, value: %d\n", (*found).key.characters(), (*found).value);
- } else {
- printf("not found\n");
- }
-
- auto charbuf = Buffer<char>::create_uninitialized(1024);
- printf("charbuf.size() = %zu\n", charbuf->size());
-
- {
- Vector<String> problem;
- for (int i = 0; i < 256; ++i)
- problem.append("test");
- }
-
- {
- auto print_ints = [] (const Vector<int>& v) {
- printf("Vector {\n size: %zu\n capacity: %zu\n elements: ", v.size(), v.capacity());
- for (auto i : v)
- printf("%d ", i);
- printf("\n}\n");
- };
-
- Vector<int> v;
- v.append(0);
- v.append(1);
- v.append(2);
- v.append(3);
- print_ints(v);
-
- v.remove(1);
- print_ints(v);
-
- v.remove(0);
- print_ints(v);
-
- v.remove(0);
- print_ints(v);
-
- v.remove(0);
- print_ints(v);
- }
-
- {
- auto print_ints = [] (const HashTable<int>& h) {
- printf("HashTable {\n size: %u\n capacity: %u\n elements: ", h.size(), h.capacity());
- for (auto i : h)
- printf("%d ", i);
- printf("\n}\n");
- };
-
- HashTable<int> h;
-
- h.set(10);
- h.set(20);
- h.set(30);
- h.set(40);
- h.set(50);
-
- h.dump();
-
- print_ints(h);
-
- h.remove(30);
- print_ints(h);
-
- h.set(30);
- h.remove(30);
- print_ints(h);
- }
-
- test_weak_ptr();
-
- return 0;
-}
-
-class TestWeakable : public Weakable<TestWeakable> {
-public:
- TestWeakable() { }
- ~TestWeakable() { }
-};
-
-void test_weak_ptr()
-{
- auto* weakable = new TestWeakable;
-
- auto weak_ptr = weakable->make_weak_ptr();
- ASSERT(weak_ptr);
- ASSERT(weak_ptr.ptr() == weakable);
-
- delete weakable;
-
- ASSERT(!weak_ptr);
- ASSERT(weak_ptr.ptr() == nullptr);
-}