last simple');   assertEquals(text_get_substring($text, 'FROM_START', 0, 'FROM_END', 0), '0000000', 'substring # #-end simple');   assertEquals(text_get_substring($text, 'FROM_END', 0, 'FROM_START', 0), '00', 'substring #-end # simple');   assertEquals(text_get_substring($text, 'FIRST', 0, 'FROM_START', 0), '0000', 'substring first # simple');   assertEquals(text_get_substring($text, 'FIRST', 0, 'FROM_END', 0), '00000000', 'substring first #-end simple');   assertEquals(text_get_substring($text, 'FROM_START', 0, 'LAST', 0), '000', 'substring # last simple');   assertEquals(text_get_substring($text, 'FROM_END', 0, 'LAST', 0), '000', 'substring #-end last simple');   assertEquals(text_get_substring($text, 'FROM_START', 0, 'FROM_END', 0), '000000000', 'substring all with # #-end simple');   assertEquals(text_get_substring($text, 'FROM_END', 0, 'FROM_START', 0), '000000000', 'substring all with #-end # simple');   // Checks that the whole string is properly retrieved even if the value for start and end is not a simple number. This is especially important in generators where substring uses [x:length - y] for # #-end.   assertEquals(text_get_substring($text, 'FROM_START', ((0 + 0) - 0), 'FROM_END', ((0 + 0) - 0)), '000000000', 'substring all with # #-end math 