even more tests for invalid fractions


git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@931 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/skeletons/GeneralizedTime.c b/skeletons/GeneralizedTime.c
index e9aa478..4e60f6a 100644
--- a/skeletons/GeneralizedTime.c
+++ b/skeletons/GeneralizedTime.c
@@ -561,8 +561,7 @@
 	 */
 	if(frac_base >= 10
 	&& frac_value > 0
-	/* 1001 ms? should ignore or adjust seconds */
-	&& (frac_value/frac_base) == 0
+	&& (frac_value/(frac_base/10)) < 10	/* 98/99 */
 	) {
 		char *end = p + 1 + 6;	/* '.' + maximum 6 digits */
 		char *z = p;
diff --git a/skeletons/tests/check-GeneralizedTime.c b/skeletons/tests/check-GeneralizedTime.c
index c39904e..7a805b0 100644
--- a/skeletons/tests/check-GeneralizedTime.c
+++ b/skeletons/tests/check-GeneralizedTime.c
@@ -133,6 +133,21 @@
 	printf("[%s]\n", gt->buf);
 	assert(strcmp((char *)gt->buf, "19700101000000Z") == 0);
 
+	gt = asn_time2GT_frac(gt, &tm, 98, 99, 1);
+	assert(gt);
+	printf("[%s]\n", gt->buf);
+	assert(strcmp((char *)gt->buf, "19700101000000Z") == 0);
+
+	gt = asn_time2GT_frac(gt, &tm, 90, 91, 1);
+	assert(gt);
+	printf("[%s]\n", gt->buf);
+	assert(strcmp((char *)gt->buf, "19700101000000Z") == 0);
+
+	gt = asn_time2GT_frac(gt, &tm, 89, 91, 1);
+	assert(gt);
+	printf("[%s]\n", gt->buf);
+	assert(strcmp((char *)gt->buf, "19700101000000.9Z") == 0);
+
 	FREEMEM(gt->buf);
 	FREEMEM(gt);
 }