#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
+#include <assert.h>
#include <ccan/array_size/array_size.h>
&& (memcmp(a.ptr, b.ptr, a.len) == 0);
}
+/**
+ * bytestring_byte - get a byte from a bytestring
+ * @s: bytestring
+ * @n: index
+ *
+ * Return the @n-th byte from @s. Aborts (via assert) if @n is out of
+ * range for the length of @s.
+ */
+static inline char bytestring_byte(struct bytestring s, size_t n)
+{
+ assert(n < s.len);
+ return s.ptr[n];
+}
+
#endif /* CCAN_BYTESTRING_H_ */
struct bytestring bs, bs1, bs2, bs3, bs4, bs5;
/* This is how many tests you plan to run */
- plan_tests(9);
+ plan_tests(16);
bs = bytestring(str1, sizeof(str1) - 1);
ok1(bs.ptr == str1);
ok1(bs5.ptr == NULL);
ok1(bytestring_eq(bs5, bytestring_NULL));
+ ok1(bytestring_byte(bs2, 0) == 'a');
+ ok1(bytestring_byte(bs2, 1) == 'b');
+ ok1(bytestring_byte(bs2, 2) == 'c');
+ ok1(bytestring_byte(bs2, 3) == '\0');
+ ok1(bytestring_byte(bs2, 4) == 'd');
+ ok1(bytestring_byte(bs2, 5) == 'e');
+ ok1(bytestring_byte(bs2, 6) == 'f');
+
/* This exits depending on whether all tests passed */
return exit_status();
}