diff --git a/.gitignore b/.gitignore
index 07fde56..9dc2b36 100644
--- a/.gitignore
+++ b/.gitignore
@@ -32,6 +32,7 @@
 .dirstamp
 tests/atconfig
 tests/package.m4
+tests/alloc/AllocTest
 tests/rlcmac/RLCMACTest
 tests/emu/pcu_emu
 tests/testsuite
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 88be652..a752067 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,6 +1,6 @@
 AM_CPPFLAGS = $(STD_DEFINES_AND_INCLUDES) $(LIBOSMOCORE_CFLAGS) $(LIBOSMOGB_CFLAGS) $(LIBOSMOGSM_CFLAGS) -I$(top_srcdir)/src/
 
-check_PROGRAMS = rlcmac/RLCMACTest
+check_PROGRAMS = rlcmac/RLCMACTest alloc/AllocTest
 noinst_PROGRAMS = emu/pcu_emu
 
 rlcmac_RLCMACTest_SOURCES = rlcmac/RLCMACTest.cpp
@@ -9,6 +9,14 @@
 	$(LIBOSMOCORE_LIBS) \
 	$(COMMON_LA)
 
+alloc_AllocTest_SOURCES = alloc/AllocTest.cpp
+alloc_AllocTest_LDADD = \
+	$(top_builddir)/src/libgprs.la \
+	$(LIBOSMOGB_LIBS) \
+	$(LIBOSMOGSM_LIBS) \
+	$(LIBOSMOCORE_LIBS) \
+	$(COMMON_LA)
+
 emu_pcu_emu_SOURCES = emu/pcu_emu.cpp emu/test_replay_gprs_attach.cpp \
 	emu/openbsc_clone.c emu/openbsc_clone.h emu/gprs_tests.h \
 	emu/test_pdp_activation.cpp
@@ -40,7 +48,8 @@
 
 EXTRA_DIST = \
 	testsuite.at $(srcdir)/package.m4 $(TESTSUITE)	\
-	rlcmac/RLCMACTest.ok rlcmac/RLCMACTest.err
+	rlcmac/RLCMACTest.ok rlcmac/RLCMACTest.err \
+	alloc/AllocTest.ok alloc/AllocTest.err
 
 DISTCLEANFILES = atconfig
 
diff --git a/tests/alloc/AllocTest.cpp b/tests/alloc/AllocTest.cpp
new file mode 100644
index 0000000..3d58f50
--- /dev/null
+++ b/tests/alloc/AllocTest.cpp
@@ -0,0 +1,123 @@
+/* AllocTest.cpp
+ *
+ * Copyright (C) 2013 by Holger Hans Peter Freyther
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+ */
+
+#include "gprs_rlcmac.h"
+#include "gprs_debug.h"
+#include "tbf.h"
+
+#include <string.h>
+#include <stdio.h>
+
+extern "C" {
+#include <osmocom/core/application.h>
+#include <osmocom/core/msgb.h>
+#include <osmocom/core/talloc.h>
+#include <osmocom/core/utils.h>
+}
+
+/* globals used by the code */
+void *tall_pcu_ctx;
+struct gprs_rlcmac_bts *gprs_rlcmac_bts;
+int16_t spoof_mnc = 0, spoof_mcc = 0;
+
+static void test_alloc_a(gprs_rlcmac_tbf_direction dir, const int count)
+{
+	int tfi;
+	uint8_t used_trx;
+	struct gprs_rlcmac_bts bts;
+	struct gprs_rlcmac_tbf *tbfs[33] = { 0, };
+
+	printf("Testing alloc_a direction(%d)\n", dir);
+
+	memset(&bts, 0, sizeof(bts));
+	bts.alloc_algorithm = alloc_algorithm_a;
+	gprs_rlcmac_bts = &bts;
+
+	struct gprs_rlcmac_trx *trx = &bts.trx[0];
+	trx->pdch[2].enable = 1;
+	trx->pdch[3].enable = 1;
+
+	/**
+	 * Currently alloc_a will only allocate from the first
+	 * PDCH and all possible usf's. We run out of usf's before
+	 * we are out of tfi's. Observe this and make sure that at
+	 * least this part is working okay.
+	 */
+	for (int i = 0; i < count; ++i) {
+		struct gprs_rlcmac_tbf *tbf;
+
+		tfi = tfi_find_free(&bts, dir, &used_trx, 0);
+		OSMO_ASSERT(tfi >= 0);
+		tbfs[i] = tbf_alloc(&bts, NULL, dir, tfi, used_trx, 0, 0);
+	}
+
+	/* Now check that there are still some TFIs */
+	tfi = tfi_find_free(&bts, dir, &used_trx, 0);
+	switch (dir) {
+	case GPRS_RLCMAC_UL_TBF:
+		OSMO_ASSERT(tfi >= 0);
+		break;
+	case GPRS_RLCMAC_DL_TBF:
+		OSMO_ASSERT(tfi < 0);
+		break;
+	}
+	OSMO_ASSERT(!tbf_alloc(&bts, NULL, dir, tfi, used_trx, 0, 0));
+
+	for (int i = 0; i < ARRAY_SIZE(tbfs); ++i)
+		if (tbfs[i])
+			tbf_free(tbfs[i]);
+
+	tfi = tfi_find_free(&bts, dir, &used_trx, 0);
+	OSMO_ASSERT(tfi >= 0);
+
+	tbfs[tfi] = tbf_alloc(&bts, NULL, dir, tfi, used_trx, 0, 0);
+	OSMO_ASSERT(tbfs[tfi]);
+	tbf_free(tbfs[tfi]);
+}
+
+static void test_alloc_a()
+{
+	test_alloc_a(GPRS_RLCMAC_DL_TBF, 32);
+	test_alloc_a(GPRS_RLCMAC_UL_TBF, 7);
+}
+
+int main(int argc, char **argv)
+{
+	tall_pcu_ctx = talloc_named_const(NULL, 1, "moiji-mobile AllocTest context");
+	if (!tall_pcu_ctx)
+		abort();
+
+	msgb_set_talloc_ctx(tall_pcu_ctx);
+	osmo_init_logging(&gprs_log_info);
+	log_set_use_color(osmo_stderr_target, 0);
+	log_set_print_filename(osmo_stderr_target, 0);
+
+	test_alloc_a();
+	return EXIT_SUCCESS;
+}
+
+/*
+ * stubs that should not be reached
+ */
+extern "C" {
+void l1if_pdch_req() { abort(); }
+void l1if_connect_pdch() { abort(); }
+void l1if_close_pdch() { abort(); }
+void l1if_open_pdch() { abort(); }
+}
diff --git a/tests/alloc/AllocTest.err b/tests/alloc/AllocTest.err
new file mode 100644
index 0000000..3f285a4
--- /dev/null
+++ b/tests/alloc/AllocTest.err
@@ -0,0 +1,2 @@
+No TFI available.
+- Failed allocating TS=2, no USF available
diff --git a/tests/alloc/AllocTest.ok b/tests/alloc/AllocTest.ok
new file mode 100644
index 0000000..86a8c19
--- /dev/null
+++ b/tests/alloc/AllocTest.ok
@@ -0,0 +1,2 @@
+Testing alloc_a direction(0)
+Testing alloc_a direction(1)
diff --git a/tests/testsuite.at b/tests/testsuite.at
index 824c274..cad8a68 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -8,3 +8,10 @@
 cat $abs_srcdir/rlcmac/RLCMACTest.err > experr
 AT_CHECK([$abs_top_builddir/tests/rlcmac/RLCMACTest], [0], [expout], [experr])
 AT_CLEANUP
+
+AT_SETUP([ts_alloc])
+AT_KEYWORDS([ts_alloc])
+cat $abs_srcdir/alloc/AllocTest.ok > expout
+cat $abs_srcdir/alloc/AllocTest.err > experr
+AT_CHECK([$abs_top_builddir/tests/alloc/AllocTest], [0], [expout], [experr])
+AT_CLEANUP
