Skip to content

Commit

Permalink
add dotnet package
Browse files Browse the repository at this point in the history
  • Loading branch information
paiv committed Nov 17, 2024
1 parent 01ef487 commit 72f5324
Show file tree
Hide file tree
Showing 16 changed files with 946 additions and 5 deletions.
21 changes: 21 additions & 0 deletions .github/workflows/build-csharp.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: .NET C#

on:
push:
tags: ['*']
pull_request:
branches: [main]
paths:
- 'csharp/**/*'

jobs:

build-csharp:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4

- name: Test
working-directory: ${{github.workspace}}/csharp
run: dotnet test
5 changes: 5 additions & 0 deletions csharp/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
.config
bin/
obj/
_site/
target/
22 changes: 22 additions & 0 deletions csharp/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
.PHONY: all
.PHONY: clean
.PHONY: package
.PHONY: test

all: package

clean:
@dotnet clean
@find . -type d -name target -or -name bin -or -name obj | xargs rm -r

test:
@dotnet test

package:
@dotnet pack --output target --configuration Release \
--include-symbols --include-source

push:
find target -type f -name '*.nupkg' | sort | head -n 1 | xargs -I % \
dotnet nuget push % --source https://api.nuget.org/v3/index.json \
--api-key $(API_KEY)
28 changes: 28 additions & 0 deletions csharp/UkrainianLatin.Tests/UkrainianLatin.Tests.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>

<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="3.1.2">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\UkrainianLatin\UkrainianLatin.csproj" />
</ItemGroup>

</Project>
122 changes: 122 additions & 0 deletions csharp/UkrainianLatin.Tests/UkrainianLatinTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
/* Generated by gentests.py, do not edit. */

namespace paiv.uklatn.tests;

/// <exclude/>
public class UkrainianLatinTest {
private UkrainianLatin tr;

public UkrainianLatinTest() {
tr = new UkrainianLatin();
}

[Theory]
[InlineData("Україна, Хмельницький", "Ukraïna, Xmeljnycjkyj")]
[InlineData("Щастям б’єш жук їх глицю в фон й ґедзь пріч.", "Ŝastjam b'ješ žuk ïx ğlycju v fon j gedzj prič.")]
[InlineData("ь Ь ль льє льї лью лья лье льі льу льа льйо льо", "ĵ Ĵ lj ljje ljï ljju ljja lj'e lji lj'u lj'a ljjo ljo")]
[InlineData("Єл Їл Юл Ял", "Jel Ïl Jul Jal")]
[InlineData("бь вь гь ґь дь жь зь кь ль мь нь пь рь сь ть фь хь ць чь шь щь", "bj vj ğj gj dj žj zj kj lj mj nj pj rj sj tj fj xj cj čj šj ŝj")]
[InlineData("бя вя гя ґя дя жя зя кя ля мя ня пя ря ся тя фя хя ця чя шя щя", "bja vja ğja gja dja žja zja kja lja mja nja pja rja sja tja fja xja cja čja šja ŝja")]
[InlineData("б’я в’я г’я ґ’я д’я ж’я з’я к’я л’я м’я н’я п’я р’я с’я т’я ф’я х’я ц’я ч’я ш’я щ’я", "b'ja v'ja ğ'ja g'ja d'ja ž'ja z'ja k'ja l'ja m'ja n'ja p'ja r'ja s'ja t'ja f'ja x'ja c'ja č'ja š'ja ŝ'ja")]
[InlineData("бй бйо вй гй ґй дй жй зй кй лй мй нй пй рй сй тй фй хй цй чй шй щй", "b'j b'jo v'j ğ'j g'j d'j ž'j z'j k'j l'j m'j n'j p'j r'j s'j t'j f'j x'j c'j č'j š'j ŝ'j")]
[InlineData("ня ньа н’я нь'н ньн", "nja nj'a n'ja nj'n njn")]
[InlineData("рос дыня эзёдынъ. бр кроў.", "ros dȳnja ēzödȳnǒ. br kroŭ.")]
[InlineData("А́ а́ Е́ е́ Є́ є́ И́ и́ І́ і́ Ї́ ї́ О́ о́ У́ у́ Ю́ ю́ Я́ я́", "Á á É é JÉ jé Ý ý Í í Ḯ ḯ Ó ó Ú ú JÚ jú JÁ já")]
[InlineData("Є́с сЄ́с є́с сє́с Ї́с сЇ́с ї́с сї́с Ю́с сЮ́с ю́с сю́с Я́с сЯ́с я́с ся́с", "Jés sJés jés sjés Ḯs sḮs ḯs sḯs Jús sJús jús sjús Jás sJás jás sjás")]
[InlineData("' ім’я 'жук' \"жук\" ' '", "' im'ja 'žuk' \"žuk\" ' '")]
[InlineData("Сонце світить майже білим світлом, однак через сильніше розсіювання і поглинання короткохвильової частини спектра атмосферою Землі пряме світло Сонця біля поверхні нашої планети набуває певного жовтого відтінку. Якщо небо ясне, то блакитний відтінок розсіяного світла складається з жовтуватим прямим сонячним світлом і загальне освітлення об’єктів на Землі стає білим.", "Sonce svitytj majže bilym svitlom, odnak čerez syljniše rozsijuvannja i poğlynannja korotkoxvyljovoï častyny spektra atmosferoju Zemli prjame svitlo Soncja bilja poverxni našoï planety nabuvaje pevnoğo žovtoğo vidtinku. Jakŝo nebo jasne, to blakytnyj vidtinok rozsijanoğo svitla skladajetjsja z žovtuvatym prjamym sonjačnym svitlom i zağaljne osvitlennja ob'jektiv na Zemli staje bilym.")]
[InlineData("дуб!дуб\"дуб#дуб$дуб%дуб&дуб'дуб(дуб)дуб*дуб+дуб,дуб-дуб.дуб/дуб:дуб;дуб<дуб=дуб>дуб?дуб@дуб[дуб\\дуб]дуб^дуб_дуб`дуб{дуб|дуб}дуб~дуб", "dub!dub\"dub#dub$dub%dub&dub'dub(dub)dub*dub+dub,dub-dub.dub/dub:dub;dub<dub=dub>dub?dub@dub[dub\\dub]dub^dub_dub`dub{dub|dub}dub~dub")]
[InlineData("бод бод\tбод\nбод\rбод", "bod bod\tbod\nbod\rbod")]
[InlineData("об😎нап😘неп😭нєп🧐нїп😍нюп😀няп", "ob😎nap😘nep😭njep🧐nïp😍njup😀njap")]
public void test_c2lr_DSTU_9112_A(string cyr, string lat) {
string q = tr.Encode(cyr, UkrainianLatin.Table.DSTU_9112_A);
Assert.Equal(lat, q);
string t = tr.Decode(lat, UkrainianLatin.Table.DSTU_9112_A);
Assert.Equal(cyr, t);
}

[Theory]
[InlineData("в’я в'я", "v'ja v'ja")]
[InlineData("Ї ї Й й Ё ё Ў ў", "Ï ï J j Ö ö Ŭ ŭ")]
public void test_c2l_DSTU_9112_A(string cyr, string lat) {
string q = tr.Encode(cyr, UkrainianLatin.Table.DSTU_9112_A);
Assert.Equal(lat, q);
}

[Theory]
[InlineData("я є ю", "jA jE jU")]
[InlineData("Ї ї Ь ь Ч ч Г г Щ щ Ш ш Ж ж", "Ï ï Ĵ ĵ Č č Ğ ğ Ŝ ŝ Š š Ž ž")]
[InlineData("Ё ё Ў ў Ъ ъ Ы ы Э э", "Ö ö Ŭ ŭ Ǒ ǒ Ȳ ȳ Ē ē")]
[InlineData("А́ а́ Е́ е́ Є́ Є́ є́ є́ И́ и́ І́ і́ Ї́ ї́ О́ о́ У́ у́ Ю́ Ю́ ю́ ю́ Я́ Я́ я́ я́", "Á á É é JÉ Jé jÉ jé Ý ý Í í Ḯ ḯ Ó ó Ú ú JÚ Jú jÚ jú JÁ Já jÁ já")]
[InlineData("Є́с сЄ́с є́с сє́с Ї́с сЇ́с ї́с сї́с Ю́с сЮ́с ю́с сю́с Я́с сЯ́с я́с ся́с", "Jés sJés jés sjés Ḯs sḮs ḯs sḯs Jús sJús jús sjús Jás sJás jás sjás")]
public void test_l2c_DSTU_9112_A(string cyr, string lat) {
string q = tr.Decode(lat, UkrainianLatin.Table.DSTU_9112_A);
Assert.Equal(cyr, q);
}

[Theory]
[InlineData("Україна, Хмельницький", "Ukrajina, Khmeljnycjkyj")]
[InlineData("Щастям б’єш жук їх глицю в фон й ґедзь пріч.", "Shchastjam b'jesh zhuk jikh ghlycju v fon j gedzj prich.")]
[InlineData("ь Ь ль льє льї лью лья лье льі льу льа льйо льо", "hj Hj lj ljje ljji ljju ljja lj'e lj'i lj'u lj'a ljjo ljo")]
[InlineData("Єл Їл Юл Ял", "Jel Jil Jul Jal")]
[InlineData("бь вь гь ґь дь жь зь кь ль мь нь пь рь сь ть фь хь ць чь шь щь", "bj vj ghj gj dj zhj zj kj lj mj nj pj rj sj tj fj khj cj chj shj shchj")]
[InlineData("бя вя гя ґя дя жя зя кя ля мя ня пя ря ся тя фя хя ця чя шя щя", "bja vja ghja gja dja zhja zja kja lja mja nja pja rja sja tja fja khja cja chja shja shchja")]
[InlineData("б’я в’я г’я ґ’я д’я ж’я з’я к’я л’я м’я н’я п’я р’я с’я т’я ф’я х’я ц’я ч’я ш’я щ’я", "b'ja v'ja gh'ja g'ja d'ja zh'ja z'ja k'ja l'ja m'ja n'ja p'ja r'ja s'ja t'ja f'ja kh'ja c'ja ch'ja sh'ja shch'ja")]
[InlineData("бй бйо вй гй ґй дй жй зй кй лй мй нй пй рй сй тй фй хй цй чй шй щй", "b'j b'jo v'j gh'j g'j d'j zh'j z'j k'j l'j m'j n'j p'j r'j s'j t'j f'j kh'j c'j ch'j sh'j shch'j")]
[InlineData("ня ньа н’я нь'н ньн", "nja nj'a n'ja nj'n njn")]
[InlineData("рос дыня эзёдынъ. бр кроў.", "ros dywnja ehwzjowdywnoh. br krouh.")]
[InlineData("А́ а́ Е́ е́ Є́ є́ И́ и́ І́ і́ Ї́ ї́ О́ о́ У́ у́ Ю́ ю́ Я́ я́", "Á á É é JÉ jé Ý ý Í í JÍ jí Ó ó Ú ú JÚ jú JÁ já")]
[InlineData("Є́с сЄ́с є́с сє́с Ї́с сЇ́с ї́с сї́с Ю́с сЮ́с ю́с сю́с Я́с сЯ́с я́с ся́с", "Jés sJés jés sjés Jís sJís jís sjís Jús sJús jús sjús Jás sJás jás sjás")]
[InlineData("' ім’я 'жук' \"жук\" ' '", "' im'ja 'zhuk' \"zhuk\" ' '")]
[InlineData("Сонце світить майже білим світлом, однак через сильніше розсіювання і поглинання короткохвильової частини спектра атмосферою Землі пряме світло Сонця біля поверхні нашої планети набуває певного жовтого відтінку. Якщо небо ясне, то блакитний відтінок розсіяного світла складається з жовтуватим прямим сонячним світлом і загальне освітлення об’єктів на Землі стає білим.", "Sonce svitytj majzhe bilym svitlom, odnak cherez syljnishe rozsijuvannja i poghlynannja korotkokhvyljovoji chastyny spektra atmosferoju Zemli prjame svitlo Soncja bilja poverkhni nashoji planety nabuvaje pevnogho zhovtogho vidtinku. Jakshcho nebo jasne, to blakytnyj vidtinok rozsijanogho svitla skladajetjsja z zhovtuvatym prjamym sonjachnym svitlom i zaghaljne osvitlennja ob'jektiv na Zemli staje bilym.")]
[InlineData("дуб!дуб\"дуб#дуб$дуб%дуб&дуб'дуб(дуб)дуб*дуб+дуб,дуб-дуб.дуб/дуб:дуб;дуб<дуб=дуб>дуб?дуб@дуб[дуб\\дуб]дуб^дуб_дуб`дуб{дуб|дуб}дуб~дуб", "dub!dub\"dub#dub$dub%dub&dub'dub(dub)dub*dub+dub,dub-dub.dub/dub:dub;dub<dub=dub>dub?dub@dub[dub\\dub]dub^dub_dub`dub{dub|dub}dub~dub")]
[InlineData("бод бод\tбод\nбод\rбод", "bod bod\tbod\nbod\rbod")]
[InlineData("об😎нап😘неп😭нєп🧐нїп😍нюп😀няп", "ob😎nap😘nep😭njep🧐njip😍njup😀njap")]
public void test_c2lr_DSTU_9112_B(string cyr, string lat) {
string q = tr.Encode(cyr, UkrainianLatin.Table.DSTU_9112_B);
Assert.Equal(lat, q);
string t = tr.Decode(lat, UkrainianLatin.Table.DSTU_9112_B);
Assert.Equal(cyr, t);
}

[Theory]
[InlineData("в’я в'я", "v'ja v'ja")]
[InlineData("Ї ї Й й Ё ё Ў ў", "JI ji J j JOW jow UH uh")]
public void test_c2l_DSTU_9112_B(string cyr, string lat) {
string q = tr.Encode(cyr, UkrainianLatin.Table.DSTU_9112_B);
Assert.Equal(lat, q);
}

[Theory]
[InlineData("я ї є ю г ж х щ ш ч ь", "jA jI jE jU gH zH kH sHcH sH cH hJ")]
[InlineData("А́ а́ Е́ е́ Є́ Є́ є́ є́ И́ и́ І́ і́ Ї́ Ї́ ї́ ї́ О́ о́ У́ у́ Ю́ Ю́ ю́ ю́ Я́ Я́ я́ я́", "Á á É é JÉ Jé jÉ jé Ý ý Í í JÍ Jí jÍ jí Ó ó Ú ú JÚ Jú jÚ jú JÁ Já jÁ já")]
[InlineData("Є́с сЄ́с є́с сє́с Ї́с сЇ́с ї́с сї́с Ю́с сЮ́с ю́с сю́с Я́с сЯ́с я́с ся́с", "Jés sJés jés sjés Jís sJís jís sjís Jús sJús jús sjús Jás sJás jás sjás")]
public void test_l2c_DSTU_9112_B(string cyr, string lat) {
string q = tr.Decode(lat, UkrainianLatin.Table.DSTU_9112_B);
Assert.Equal(cyr, q);
}

[Theory]
[InlineData("Україна, Хмельницький", "Ukraina, Khmelnytskyi")]
[InlineData("Щастям б’єш жук їх глицю в фон й ґедзь пріч.", "Shchastiam biesh zhuk yikh hlytsiu v fon y gedz prich.")]
[InlineData("згин зГ зГин Згин Зг ЗГ ЗГИН", "zghyn zGH zGhyn Zghyn Zgh ZGH ZGHYN")]
[InlineData("ь Ь ль льє льї лью лья лье льі льу льа льйо льо", " l lie li liu lia le li lu la lio lo")]
[InlineData("Єл Їл Юл Ял", "Yel Yil Yul Yal")]
[InlineData("бь вь гь ґь дь жь зь кь ль мь нь пь рь сь ть фь хь ць чь шь щь", "b v h g d zh z k l m n p r s t f kh ts ch sh shch")]
[InlineData("бя вя гя ґя дя жя зя кя ля мя ня пя ря ся тя фя хя ця чя шя щя", "bia via hia gia dia zhia zia kia lia mia nia pia ria sia tia fia khia tsia chia shia shchia")]
[InlineData("б’я в’я г’я ґ’я д’я ж’я з’я к’я л’я м’я н’я п’я р’я с’я т’я ф’я х’я ц’я ч’я ш’я щ’я", "bia via hia gia dia zhia zia kia lia mia nia pia ria sia tia fia khia tsia chia shia shchia")]
[InlineData("бй бйо вй гй ґй дй жй зй кй лй мй нй пй рй сй тй фй хй цй чй шй щй", "bi bio vi hi gi di zhi zi ki li mi ni pi ri si ti fi khi tsi chi shi shchi")]
[InlineData("А́ а́ Е́ е́ Є́ є́ И́ и́ І́ і́ Ї́ ї́ О́ о́ У́ у́ Ю́ ю́ Я́ я́", "Á á É é YÉ yé Ý ý Í í YÍ yí Ó ó Ú ú YÚ yú YÁ yá")]
[InlineData("Є́с сЄ́с є́с сє́с Ї́с сЇ́с ї́с сї́с Ю́с сЮ́с ю́с сю́с Я́с сЯ́с я́с ся́с", "Yés sIés yés siés Yís sÍs yís sís Yús sIús yús siús Yás sIás yás siás")]
[InlineData("' ім’я 'жук' \"жук\" ' '", "' imia 'zhuk' \"zhuk\" ' '")]
[InlineData("Сонце світить майже білим світлом, однак через сильніше розсіювання і поглинання короткохвильової частини спектра атмосферою Землі пряме світло Сонця біля поверхні нашої планети набуває певного жовтого відтінку. Якщо небо ясне, то блакитний відтінок розсіяного світла складається з жовтуватим прямим сонячним світлом і загальне освітлення об’єктів на Землі стає білим.", "Sontse svityt maizhe bilym svitlom, odnak cherez sylnishe rozsiiuvannia i pohlynannia korotkokhvylovoi chastyny spektra atmosferoiu Zemli priame svitlo Sontsia bilia poverkhni nashoi planety nabuvaie pevnoho zhovtoho vidtinku. Yakshcho nebo yasne, to blakytnyi vidtinok rozsiianoho svitla skladaietsia z zhovtuvatym priamym soniachnym svitlom i zahalne osvitlennia obiektiv na Zemli staie bilym.")]
[InlineData("в’я в'я", "via via")]
[InlineData("дуб!дуб\"дуб#дуб$дуб%дуб&дуб'дуб(дуб)дуб*дуб+дуб,дуб-дуб.дуб/дуб:дуб;дуб<дуб=дуб>дуб?дуб@дуб[дуб\\дуб]дуб^дуб_дуб`дуб{дуб|дуб}дуб~дуб", "dub!dub\"dub#dub$dub%dub&dubdub(dub)dub*dub+dub,dub-dub.dub/dub:dub;dub<dub=dub>dub?dub@dub[dub\\dub]dub^dub_dub`dub{dub|dub}dub~dub")]
[InlineData("бод бод\tбод\nбод\rбод", "bod bod\tbod\nbod\rbod")]
[InlineData("об😎нап😘неп😭нєп🧐нїп😍нюп😀няп", "ob😎nap😘nep😭niep🧐nip😍niup😀niap")]
public void test_c2l_KMU_55(string cyr, string lat) {
string q = tr.Encode(cyr, UkrainianLatin.Table.KMU_55);
Assert.Equal(lat, q);
}

}
1 change: 1 addition & 0 deletions csharp/UkrainianLatin.Tests/Usings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
global using Xunit;
Loading

0 comments on commit 72f5324

Please sign in to comment.