sgs-plural/plural.c

53 lines
1.5 KiB
C
Raw Normal View History

2021-06-08 16:23:06 +00:00
/**
* Samogitian language (ISO-639-3: sgs) plural forms
* Written by Arns Udovič in 2021 <a@arns.lt>
*
* Refs:
* https://www.gnu.org/software/gettext/manual/gettext.html#Plural-forms
*
* 0 - singular or ending in 1 with exception for 11. Ex., 1 laps
* 1 - dual or ending in 2 with exception for 12. Ex. 2 lapo
* 2 - other plural. Ex. 25 lapā
* 3 - plural for 11-19, 10, 20, 100... Ex. 12 lapu
*/
#include <stdio.h>
2024-06-21 10:33:03 +00:00
int main() {
2021-06-08 16:23:06 +00:00
int i;
int n;
int plural;
printf("This is test of plural forms for Samogitian languages\n");
printf("Written by Arns Udovič in 2021 <a@arns.lt>\n\n");
printf("0 - singular or ending in 1 with exception for 11. Ex., 1 laps\n");
2024-06-21 10:33:03 +00:00
printf("1 - dual. Ex. 2 lapo\n");
2021-06-08 16:23:06 +00:00
printf("2 - other plural. Ex. 25 lapā\n");
printf("3 - plural for 11-19, 10, 20, 100... Ex. 12 lapu\n\n");
int data[] = {0, 1, 2, 3, 10, 11, 15, 20, 21, 22, 25, 100, 101, 102, 115, 200, 1000, 100000};
2024-06-21 10:33:03 +00:00
int result[] = {3, 0, 1, 2, 3, 3, 3, 3, 0, 2, 2, 3, 0, 2, 3, 3, 3, 3};
2021-06-08 16:23:06 +00:00
for (i = 0; i < sizeof(data)/sizeof(int); ++i) {
n = data[i];
plural=(n % 10 == 1 && n % 100 != 11) ? 0
2024-06-21 10:33:03 +00:00
: ((n == 2) ? 1
: ((n != 2 && n % 10 >= 2 && n % 10 <= 9 && (n % 100 < 11 || n % 100 > 19)) ? 2
2021-06-08 16:23:06 +00:00
: 3));
printf("Testing %i, should be: %i, got %i\n", n, result[i], plural);
2024-06-21 10:33:03 +00:00
if (result[i] != plural) {
printf("ERR!\n");
return 1;
}
2021-06-08 16:23:06 +00:00
}
2024-06-21 10:33:03 +00:00
printf("\nPASS\n");
2021-06-08 16:23:06 +00:00
return 0;
}