+// Buffer for test
+typedef uint8_t fake_t;
+fake_t test_buf[BUF_TEST_LEN];
+fake_t test_buf_save[BUF_TEST_LEN];
+fake_t test_disk[BUF_TEST_LEN];
+
+KFile fd;
+
+/*
+ * Beckend to use kfile structure on pc.
+ */
+static int fake_close(KFile *fd)
+{
+ (void)fd;
+ return 0;
+}
+
+static size_t fake_read(KFile *fd, void *buf, size_t size)
+{
+ fake_t *dest = (fake_t *)buf;
+ size_t rd_len;
+
+ rd_len = MIN((kfile_off_t)size, fd->size - fd->seek_pos);
+
+ memcpy(dest, test_disk, size);
+ fd->seek_pos += rd_len;
+
+ LOG_INFO("Read: real[%ld] expected[%ld]\n", rd_len, size);
+
+ return rd_len;
+}
+
+static size_t fake_write(KFile *fd, const void *buf, size_t size)
+{
+ fake_t *src = (fake_t *)buf;
+ size_t wr_len;
+
+ wr_len = MIN((kfile_off_t)size, fd->size - fd->seek_pos);
+
+ memcpy(test_disk, src, wr_len);
+ fd->seek_pos += wr_len;
+
+ LOG_INFO("Write: real[%ld] expected[%ld]\n", wr_len, size);
+
+ return wr_len;
+}
+
+int fake_flush(KFile *fd)
+{
+ (void)fd;
+
+ return 0;
+}
+
+void fake_kfileInit(void)
+{
+ // Setup data flash programming functions.
+ fd.reopen = kfile_genericReopen;
+ fd.close = fake_close;
+ fd.read = fake_read;
+ fd.write = fake_write;
+ fd.seek = kfile_genericSeek;
+ fd.flush = fake_flush;
+
+ fd.seek_pos = 0;
+ fd.size = BUF_TEST_LEN;
+
+}
+
+/*
+ * Help function to init disk and the buffers.
+ */
+static void init_testBuf(void)
+{
+ #include <stdlib.h>