svada: fix typo

svada: fix typo

Former-commit-id: bea7bfeaf87d3230c07e44ac322c14937bc78c56 [formerly 0639aa21b6093731f561374f800b3c7fa0bbfe92]
Former-commit-id: 4d58c12b58a1930040b6049d3dded38d7f1e05d7

-- svadagenerator.no/data/svadagenerator.csv

svada = {
  {"Gitt","en integrert","målsetting","synliggjøres","potensialet","innenfor rammen av","en samlet vurdering"},
  {"Under hensyntagen til","en optimal","effekt","tas det høyde for","risikofaktorene","som en følge av","forholdene"},
  {"I lys av","en sømløs","struktur","iverksettes","fokus","for så vidt gjelder","konseptet"},
  {"Vedrørende","en implisitt","agenda","identifiseres","synergieffekten","med henblikk på","ressurssituasjonen"},
  {"Grunnet","en proaktiv","tidshorisont","initieres","incitamentet","i forhold til","tilgjengeliggjøringen"},
  {"I betraktning av","en betydelig","overveielse","lokaliseres","forankringen","hva angår","føringene"},
  {"Forutsatt","en økt","mobilitet","kommuniseres","insentivene","parallelt med","evalueringen"},
  {"Med utgangspunkt i","en vesentlig","treffsikkerhet","styrkes","innsatsen","i relasjon til","implementeringen"},
  {"I forhold til","en ikke ubetydelig","innsats","realiseres","erfaringsutvekslingen","i tilknytning til","kjernevirksomheten"},
  {"Sett hen til","en kostnadseffektiv","kvalitetssikring","effektueres","informasjonsflyten","på bakgrunn av","visjonen"},
  {"I henhold til","en avtagende","problematikk","forankres","kriteriene","avhengig av","satsingsområdet"},
  {"Med tanke på","en vedvarende","ressursbruk","maksimeres","strategien","hva gjelder","problemstillingen"},
  {"Uavhengig av","en tiltagende","avveining","konkretiseres","økningen","eller sagt på en annen måte:","beskaffenheten"},
  {"Sett på bakgrunn av","en gjeldende","avklaring","tilgjengeliggjøres","egenarten","på samme måte som","vesentligheten"},
  {"Sammenholdt med","en helhetlig","implementering","utvides","tilstedeværelsen","i motsetning til","egenarten"},
  {"På grunn av","en manglende","styringsinnsats","dokumenteres","oppfølgingen","innenfor","målområdet"},
  {"Med hensyn til","en særlig","innovasjon","spores","resultatene","i tillegg til","verdiene"},
  {"Under forutsetning av","en løpende","effektivisering","innhentes","kunnskapene","gjennom","realitetsorienteringen"},
  {"Etter en totalvurdering av","en langsiktig","kvalitetsheving","revitaliseres","betydningen","ut fra","resultatoppnåelsen"},
  {"Uten hensyn til","en bærekraftig","utvikling","stabiliseres","kompetansehevingen","med sikte på","behovene"},
  {"Avhengig av","en resultatorientert","måloppnåelse","genereres","instrumentet","på tvers av","løsningen"},
  {"På grunnlag av","en tverrfaglig","oppgaveløsning","stimuleres","scenarioet","på linje med","parametrene"},
  {"I og med","en kommunikativ","arbeidsmodell","balanseres","spisskompetansen","utenom","ressursinnsatsen"},
  {"Under henvisning til","en inkluderende","organisasjon","ivaretas","relasjonene","i forlengelsen av","konsekvensaspektet"},
  {"Gitt","en plutselig","fornyelse","omfattes","fornyelsen","innenfor rammen av","oppgjøret"},
  {"Under hensyntagen til","en uforutsett","risikovurdering","utstedes","forsikringsbehovet","som en følge av","husstanden"},
  {"I lys av","en erstatningsmessig","forsikringstaker","iverksettes","vilkårene","under forutsetning av","årsakssammenhengen"},
  {"Vedrørende","en kollektiv","egenandel","anvendes","oppsigelsen","med henblikk på","betingelsene"},
  {"Grunnet","en indirekte","tariff","kommuniseres","angrefristen","i forhold til","opplysningsplikten"},
  {"I betraktning av","en skadevoldende","sikkerhetsforskrift","Innebæres","tegningstidspunktet","hva angår","behovsgjennomgangen"},
  {"Forutsatt","en særskilt","regress","tegnes","oppgjørsreglene","parallelt med","evalueringen"},
  {"Med utgangspunkt i","en ansvarsbegrensende","reassuranse","styrkes","klagenemden","i relasjon til","utredningsforløpet"},
  {"I forhold til","en inntruffet","utløpsdato","realiseres","vilkårstolkningen","i tilknytning til","kjernevirksomheten"},
  {"Sett hen til","en forholdsmessig","begunstigelse","baseres","løsøre","på bakgrunn av","visjonen"},
  {"I henhold til","en avvikende","helseerklæring","forankres","personopplysningene","avhengig av","satsingsområdet"},
  {"Med tanke på","en prosentvis","dekningsgrad","optimaliseres","konsekvensendringen","hva gjelder","porteføljen"},
  {"Uavhengig av","en juridisk","samlefaktura","konkretiseres","sviket","eller sagt på en annen måte:","lønnsomhetsmodellene"},
  {"Sett på bakgrunn av","en årlig","premie","meldes","flytteretten","på samme måte som","distribusjonskanalene"},
  {"Sammenholdt med","en ervervsmessig","indeksjustering","utvides","erstatningsansvaret","i motsetning til","avkortningen"},
  {"På grunn av","en bindende","rabatt","dokumenteres","segmentene","innenfor","takstmennene"},
  {"Med hensyn til","en prosessorientert","forutsetning","utredes","skadeskjemaene","i tillegg til","kjerneverdiene"},
  {"Under forutsetning av","en systemmessig","panthaver","innhentes","forsikrede","gjennom","skadeprosenten"},
  {"Etter en totalvurdering av","en skriftlig","sikkerhetsrabatt","ivaretas","premieberegningsgrunnlaget","ut fra","tilleggsdekningen"},
  {"Uten hensyn til","en tilpasningsdyktig","skjønnsvurdering","utløses","bonusbestemmelsene","med sikte på","bransjestandarden"},
  {"Avhengig av","en sesongvariert","skadetakst","stabiliseres","hovedforfallet","på tvers av","løsningssporet"},
  {"På grunnlag av","en gjennomsnittlig","bygningsdel","påvirkes","rammebetingelsene","på linje med","tariffparametrene"},
  {"I og med","en skademessig","forsikringstaker","avtales","unntaksreglene","utenom","markedsandelene"},
  {"Under henvisning til","en trendsettende","purrerutine","synliggjøres","kompensasjonen","i forlengelsen av","konsekvensaspektet"},
  {"Under henvisning til","en effektbasert","avdelingskultur","realiseres","sluttilstanden","utenom","operasjonen"},
  {"På grunnlag av","en operativ","doktrine","omsettes","hensikten","i forlengelsen av","kommandonivået"},
  {"Med bakgrunn i","en fellesoperativ","kommando","implementeres","virkefeltet","innenfor","kampanjeplanen"},
  {"Gitt","en militærstrategisk","operasjonsdimensjon","reflekteres","samvirket","i utnyttelsen av","profesjonen"},
  {"Avhengig av","en taktisk","manøver","utvikles","kommandokjeden","ut fra","forsvarsgrenen"},
  {"Sett i lys av","en stridsteknisk","samhandling","kjennetegnes","avskrekkingseffekten","ut over","våpengrenen"},
  {"Uten hensyn til","en dynamisk","konflikt","sammenfattes","synergieffekten","på tvers av","alliansen"},
  {"I og med","en konvensjonell","krigføring","iverksettes","friksjonen","i tilknytning til","kjerneverdiene"},
  {"Etter en totalvurdering av","en ukonvensjonell","maktbruk","avgjøres","planverket","i forbindelse med","konseptutviklingen"},
  {"Under analysen av","en fredsbevarende","styrkemultiplikator","tilpasses","styrkebidraget","med hensyn til ","militærmakten"},
  {"I kontrollen av","en tverrsektoriell","interoperabilitet","operasjonaliseres","virkemiddelet","gjennom","krigens natur"},
  {"I arbeidet med","en overordnet","konfliktintensitet","påvirkes","lendevurderingen","med basis i ","handlingsrommet"},
  {"Under forutsetning av","en nødvendig","konflikthåndtering","identifiseres","fiendevurderingen","til støtte for","deployeringen"},
  {"Sammenholdt med","en offensiv","avskrekking","organiseres","stridsfeltet","ved bruk av","operasjonsområdet"},
  {"Sett hen til","en defensiv","myndighetsutøvelse","fastsettes","evnen","på linje med","styrkedisponeringen"},
  {"Etter etablering av","en desentralisert","prosessavhengighet","styrkes","stridsevnen","parallellt med","langtidsplanen"},
  {"Grunnet","en oppdragsbasert","beredskap","koordineres","innsatsmidlet","i relasjon til","sikkerhetspolitikken"},
  {"Vedrørende","en maritim","kraftsamling","bevisstgjøres","situasjonsforståelsen","i forhold til ","oppdragsorganiseringen"},
  {"Forutsatt","en spesialisert","ressursbruk","forsterkes","schwerpunktet","i motsetning til","totalforsvaret"},
  {"Etter planlegging av","en indirekte","beslutningsevne","fokuseres","trusselbildet","i tillegg til","feltfunksjonen"},
  {"Ved bruk av","en sentralisert","handlekraft","samordnes","uttaket","innenfor rammen av","brigadestrukturen"},
  {"Gitt","en forskningsbasert","målsetting","synliggjøres","forebyggingspotensialet","innenfor rammen av","sykehussammenslåingen"},
  {"Under hensyntagen til","en optimal","detaljering","overstyres","helserisikoen","som en følge av","DRG-produksjonen"},
  {"I lys av","en sømløs","struktur","iverksettes","helseministerens standpunkt","for så vidt gjelder","rehabiliteringsprosjekt"},
  {"Vedrørende","en pasientorientert","agenda","identifiseres","samhandlingsarenaene","med henblikk på","styringsmodellen"},
  {"Grunnet","en proaktiv","tidshorisont","initieres","brukerrepresentasjonen","i forhold til","leveransekonsept"},
  {"I betraktning av","en betydelig","optimalisering","lokaliseres","kunnskapsforankringen","hva angår","IA-arbeidet"},
  {"Forutsatt","en tverrfaglig","mobilitet","kommuniseres","statsekretærens vurdering","parallelt med","nasjonale helsemål"},
  {"Med utgangspunkt i","en vesentlig","treffsikkerhet","styrkes","HR-direktørens beslutning","i relasjon til","turnusforskriften"},
  {"I forhold til","en helsepolitisk","innsats","realiseres","brukertilfredsheten","i tilknytning til","utfordringsrommet"},
  {"Sett hen til","en kostnadseffektiv","kvalitetssikring","effektueres","helseinformasjonsflyten","på bakgrunn av","helsevisjonene"},
  {"I henhold til","en avtagende","problematikk","forankres","samhandlingspotensialet","avhengig av","rekrutteringsutfordringene"},
  {"Med tanke på","en vedvarende","ressursbruk","maksimeres","økonomisjefens målhorisont","hva gjelder","feilbehandlingen"},
  {"Uavhengig av","en tiltagende","omstilling","konkretiseres","sykehusdirektørens visjon","koordinert med","tilsynsrapporten"},
  {"Sett på bakgrunn av","en helsefaglig","avklaring","tilgjengeliggjøres","helsegevinsten","på samme måte som","omstillingsprosessen"},
  {"Sammenholdt med","en helhetlig","implementering","utvides","helseutfordringene","i motsetning til","leveransekonseptet"},
  {"På grunn av","en manglende","styringsinnsats","dokumenteres","helseproduksjonen","innenfor","innsatsfokuseringen"},
  {"Med hensyn til","en særlig","innovasjon","spores","fastlegenes produksjonsevne","i tillegg til","helseforetaket"},
  {"Under forutsetning av","en løpende","forventningsjustering","innhentes","rehabiliteringspotensialet","gjennom","ventelisteskandalene"},
  {"Etter en totalvurdering av","en langsiktig","orientering","adresseres","samhandlingskompetansen","ut fra","tjenesteintegreringen"},
  {"Uten hensyn til","en bærekraftig","utvikling","stabiliseres","forsvarlighetskravene","med sikte på","kjernevirksomheten"},
  {"Avhengig av","en resultatorientert","målhorisont","genereres","samhandlingskoordineringen","på tvers av","pasientsskadeerstatningen"},
  {"På grunnlag av","en tverrfaglig","arena","stimuleres","avviksmeldingene","på linje med","kvalitetsarbeidet"},
  {"I og med","en kunnskapsbasert","synergi","balanseres","fagkoordineringen","utenom","systemsvikten"},
  {"Under henvisning til","en inkluderende","avstemning","ivaretas","helseproblematikken","i forlengelsen av","helsereformene"},
  {"Gitt","en representativ","beskrivelse","dokumenteres","visualiseringen","innenfor rammen av","kommunepolitikken"},
  {"I lys av","en implisitt","gjengivelse","ivaretas","byggesøknaden","i motsetning til","samordningsplikten"},
  {"Med bakgrunn i","en konkret","søknad","utredes","materialiteten","i tillegg til","saksbehandlingstiden"},
  {"I forhold til","en feilaktig","skjemautfylling","fastslås","beskaffenheten","gjennom","tiltakshaveren"},
  {"Sett hen til","en faktisk","råderett","meldes","kontrollerklæringen","parallelt med","dispensasjonssøknaden"},
  {"I og med","en nødvendig","nabovarsling","konkluderes","søknadsprosessen","for så vidt gjelder","reguleringsplanen"},
  {"Ifølge","en transparent","klagebehandling","betviles","vedtaksbegrunnelsen","på basis av","kartgrunnlaget"},
  {"Sammenliknet med","en langsiktig","saksbehandling","oppleves","forføyningen","innenfor","hjemmelsgrunnlaget"},
  {"Ut fra","en bærekraftig","samhandling","betraktes","gjennomføringsplanen","i forhold til","planvedtaket"},
  {"Uavhengig av","en representativ","prosessavklaring","estimeres","ansvarsbelegningen","med henblikk på","ansvarsretten"},
  {"Basert på","en kvalitativ","konkretisering","bedømmes","tiltaket","ved hjelp av","prosjekteringen"},
  {"Vedrørende","en søknadspliktig","innvilgelse","anbefales","igangsettingstillatelsen","på linje med","planforslaget"},
  {"Under henvisning til","en klanderverdig","kvalitetsbedømming","forhåndsvurderes","ferdigattesten","på tvers av","grunnboken"},
  {"Grunnet","en arkitekturbasert","ulempebetraktning","avklares","kvaliteten","knyttet til","planbestemmelsen"},
  {"Tatt i betraktning","en systematisk","tillatelse","preaksepteres","dispensasjonen","som en følge av","arealbruken"},
  {"Forutsatt","(en ressursmessig)","realitetsbehandling","fastsettes","samsvarserklæringen","begrunnet i","statlig arealplan"},
  {"Uten hensyn til","en vesentlig","arealoverføring","forankres","oppføringen","i kraft av","tomtefestelova"},
  {"Med sikte på","en midlertidig","godkjennelse","utløses","rammetillatelsen","på tross av","strandsonen"},
  {"Sett ut fra","en kvalifisert","omregulering","samordnes","fasadeendringen","i relasjon til","ansvarsretten"},
  {"Med grunnlag i","en frittliggende","rammetillatelse","vurderes","terrenginngrepet","i overensstemmelse med","tvingende sikkerhetshensyn"},
}

PRIVMSG:
  '^%psvada$': (s, d, a) =>
    words = {}
    wordN = 1
    for i=1,7 do
      line = svada[math.random(1, #svada)]
      word = line[wordN]
      table.insert(words, word)
      wordN = wordN + 1

    say table.concat(words, ' ')

-- svadagenerator.no/data/svadagenerator.csv

svada = {
  {"Gitt","en integrert","målsetting","synliggjøres","potensialet","innenfor rammen av","en samlet vurdering"},
  {"Under hensyntagen til","en optimal","effekt","tas det høyde for","risikofaktorene","som en følge av","forholdene"},
  {"I lys av","en sømløs","struktur","iverksettes","fokus","for så vidt gjelder","konseptet"},
  {"Vedrørende","en implisitt","agenda","identifiseres","synergieffekten","med henblikk på","ressurssituasjonen"},
  {"Grunnet","en proaktiv","tidshorisont","initieres","incitamentet","i forhold til","tilgjengeliggjøringen"},
  {"I betraktning av","en betydelig","overveielse","lokaliseres","forankringen","hva angår","føringene"},
  {"Forutsatt","en økt","mobilitet","kommuniseres","insentivene","parallelt med","evalueringen"},
  {"Med utgangspunkt i","en vesentlig","treffsikkerhet","styrkes","innsatsen","i relasjon til","implementeringen"},
  {"I forhold til","en ikke ubetydelig","innsats","realiseres","erfaringsutvekslingen","i tilknytning til","kjernevirksomheten"},
  {"Sett hen til","en kostnadseffektiv","kvalitetssikring","effektueres","informasjonsflyten","på bakgrunn av","visjonen"},
  {"I henhold til","en avtagende","problematikk","forankres","kriteriene","avhengig av","satsingsområdet"},
  {"Med tanke på","en vedvarende","ressursbruk","maksimeres","strategien","hva gjelder","problemstillingen"},
  {"Uavhengig av","en tiltagende","avveining","konkretiseres","økningen","eller sagt på en annen måte:","beskaffenheten"},
  {"Sett på bakgrunn av","en gjeldende","avklaring","tilgjengeliggjøres","egenarten","på samme måte som","vesentligheten"},
  {"Sammenholdt med","en helhetlig","implementering","utvides","tilstedeværelsen","i motsetning til","egenarten"},
  {"På grunn av","en manglende","styringsinnsats","dokumenteres","oppfølgingen","innenfor","målområdet"},
  {"Med hensyn til","en særlig","innovasjon","spores","resultatene","i tillegg til","verdiene"},
  {"Under forutsetning av","en løpende","effektivisering","innhentes","kunnskapene","gjennom","realitetsorienteringen"},
  {"Etter en totalvurdering av","en langsiktig","kvalitetsheving","revitaliseres","betydningen","ut fra","resultatoppnåelsen"},
  {"Uten hensyn til","en bærekraftig","utvikling","stabiliseres","kompetansehevingen","med sikte på","behovene"},
  {"Avhengig av","en resultatorientert","måloppnåelse","genereres","instrumentet","på tvers av","løsningen"},
  {"På grunnlag av","en tverrfaglig","oppgaveløsning","stimuleres","scenarioet","på linje med","parametrene"},
  {"I og med","en kommunikativ","arbeidsmodell","balanseres","spisskompetansen","utenom","ressursinnsatsen"},
  {"Under henvisning til","en inkluderende","organisasjon","ivaretas","relasjonene","i forlengelsen av","konsekvensaspektet"},
  {"Gitt","en plutselig","fornyelse","omfattes","fornyelsen","innenfor rammen av","oppgjøret"},
  {"Under hensyntagen til","en uforutsett","risikovurdering","utstedes","forsikringsbehovet","som en følge av","husstanden"},
  {"I lys av","en erstatningsmessig","forsikringstaker","iverksettes","vilkårene","under forutsetning av","årsakssammenhengen"},
  {"Vedrørende","en kollektiv","egenandel","anvendes","oppsigelsen","med henblikk på","betingelsene"},
  {"Grunnet","en indirekte","tariff","kommuniseres","angrefristen","i forhold til","opplysningsplikten"},
  {"I betraktning av","en skadevoldende","sikkerhetsforskrift","Innebæres","tegningstidspunktet","hva angår","behovsgjennomgangen"},
  {"Forutsatt","en særskilt","regress","tegnes","oppgjørsreglene","parallelt med","evalueringen"},
  {"Med utgangspunkt i","en ansvarsbegrensende","reassuranse","styrkes","klagenemden","i relasjon til","utredningsforløpet"},
  {"I forhold til","en inntruffet","utløpsdato","realiseres","vilkårstolkningen","i tilknytning til","kjernevirksomheten"},
  {"Sett hen til","en forholdsmessig","begunstigelse","baseres","løsøre","på bakgrunn av","visjonen"},
  {"I henhold til","en avvikende","helseerklæring","forankres","personopplysningene","avhengig av","satsingsområdet"},
  {"Med tanke på","en prosentvis","dekningsgrad","optimaliseres","konsekvensendringen","hva gjelder","porteføljen"},
  {"Uavhengig av","en juridisk","samlefaktura","konkretiseres","sviket","eller sagt på en annen måte:","lønnsomhetsmodellene"},
  {"Sett på bakgrunn av","en årlig","premie","meldes","flytteretten","på samme måte som","distribusjonskanalene"},
  {"Sammenholdt med","en ervervsmessig","indeksjustering","utvides","erstatningsansvaret","i motsetning til","avkortningen"},
  {"På grunn av","en bindende","rabatt","dokumenteres","segmentene","innenfor","takstmennene"},
  {"Med hensyn til","en prosessorientert","forutsetning","utredes","skadeskjemaene","i tillegg til","kjerneverdiene"},
  {"Under forutsetning av","en systemmessig","panthaver","innhentes","forsikrede","gjennom","skadeprosenten"},
  {"Etter en totalvurdering av","en skriftlig","sikkerhetsrabatt","ivaretas","premieberegningsgrunnlaget","ut fra","tilleggsdekningen"},
  {"Uten hensyn til","en tilpasningsdyktig","skjønnsvurdering","utløses","bonusbestemmelsene","med sikte på","bransjestandarden"},
  {"Avhengig av","en sesongvariert","skadetakst","stabiliseres","hovedforfallet","på tvers av","løsningssporet"},
  {"På grunnlag av","en gjennomsnittlig","bygningsdel","påvirkes","rammebetingelsene","på linje med","tariffparametrene"},
  {"I og med","en skademessig","forsikringstaker","avtales","unntaksreglene","utenom","markedsandelene"},
  {"Under henvisning til","en trendsettende","purrerutine","synliggjøres","kompensasjonen","i forlengelsen av","konsekvensaspektet"},
  {"Under henvisning til","en effektbasert","avdelingskultur","realiseres","sluttilstanden","utenom","operasjonen"},
  {"På grunnlag av","en operativ","doktrine","omsettes","hensikten","i forlengelsen av","kommandonivået"},
  {"Med bakrunn i","en fellesoperativ","kommando","implementeres","virkefeltet","innenfor","kampanjeplanen"},
  {"Gitt","en militærstrategisk","operasjonsdimensjon","reflekteres","samvirket","i utnyttelsen av","profesjonen"},
  {"Avhengig av","en taktisk","manøver","utvikles","kommandokjeden","ut fra","forsvarsgrenen"},
  {"Sett i lys av","en stridsteknisk","samhandling","kjennetegnes","avskrekkingseffekten","ut over","våpengrenen"},
  {"Uten hensyn til","en dynamisk","konflikt","sammenfattes","synergieffekten","på tvers av","alliansen"},
  {"I og med","en konvensjonell","krigføring","iverksettes","friksjonen","i tilknytning til","kjerneverdiene"},
  {"Etter en totalvurdering av","en ukonvensjonell","maktbruk","avgjøres","planverket","i forbindelse med","konseptutviklingen"},
  {"Under analysen av","en fredsbevarende","styrkemultiplikator","tilpasses","styrkebidraget","med hensyn til ","militærmakten"},
  {"I kontrollen av","en tverrsektoriell","interoperabilitet","operasjonaliseres","virkemiddelet","gjennom","krigens natur"},
  {"I arbeidet med","en overordnet","konfliktintensitet","påvirkes","lendevurderingen","med basis i ","handlingsrommet"},
  {"Under forutsetning av","en nødvendig","konflikthåndtering","identifiseres","fiendevurderingen","til støtte for","deployeringen"},
  {"Sammenholdt med","en offensiv","avskrekking","organiseres","stridsfeltet","ved bruk av","operasjonsområdet"},
  {"Sett hen til","en defensiv","myndighetsutøvelse","fastsettes","evnen","på linje med","styrkedisponeringen"},
  {"Etter etablering av","en desentralisert","prosessavhengighet","styrkes","stridsevnen","parallellt med","langtidsplanen"},
  {"Grunnet","en oppdragsbasert","beredskap","koordineres","innsatsmidlet","i relasjon til","sikkerhetspolitikken"},
  {"Vedrørende","en maritim","kraftsamling","bevisstgjøres","situasjonsforståelsen","i forhold til ","oppdragsorganiseringen"},
  {"Forutsatt","en spesialisert","ressursbruk","forsterkes","schwerpunktet","i motsetning til","totalforsvaret"},
  {"Etter planlegging av","en indirekte","beslutningsevne","fokuseres","trusselbildet","i tillegg til","feltfunksjonen"},
  {"Ved bruk av","en sentralisert","handlekraft","samordnes","uttaket","innenfor rammen av","brigadestrukturen"},
  {"Gitt","en forskningsbasert","målsetting","synliggjøres","forebyggingspotensialet","innenfor rammen av","sykehussammenslåingen"},
  {"Under hensyntagen til","en optimal","detaljering","overstyres","helserisikoen","som en følge av","DRG-produksjonen"},
  {"I lys av","en sømløs","struktur","iverksettes","helseministerens standpunkt","for så vidt gjelder","rehabiliteringsprosjekt"},
  {"Vedrørende","en pasientorientert","agenda","identifiseres","samhandlingsarenaene","med henblikk på","styringsmodellen"},
  {"Grunnet","en proaktiv","tidshorisont","initieres","brukerrepresentasjonen","i forhold til","leveransekonsept"},
  {"I betraktning av","en betydelig","optimalisering","lokaliseres","kunnskapsforankringen","hva angår","IA-arbeidet"},
  {"Forutsatt","en tverrfaglig","mobilitet","kommuniseres","statsekretærens vurdering","parallelt med","nasjonale helsemål"},
  {"Med utgangspunkt i","en vesentlig","treffsikkerhet","styrkes","HR-direktørens beslutning","i relasjon til","turnusforskriften"},
  {"I forhold til","en helsepolitisk","innsats","realiseres","brukertilfredsheten","i tilknytning til","utfordringsrommet"},
  {"Sett hen til","en kostnadseffektiv","kvalitetssikring","effektueres","helseinformasjonsflyten","på bakgrunn av","helsevisjonene"},
  {"I henhold til","en avtagende","problematikk","forankres","samhandlingspotensialet","avhengig av","rekrutteringsutfordringene"},
  {"Med tanke på","en vedvarende","ressursbruk","maksimeres","økonomisjefens målhorisont","hva gjelder","feilbehandlingen"},
  {"Uavhengig av","en tiltagende","omstilling","konkretiseres","sykehusdirektørens visjon","koordinert med","tilsynsrapporten"},
  {"Sett på bakgrunn av","en helsefaglig","avklaring","tilgjengeliggjøres","helsegevinsten","på samme måte som","omstillingsprosessen"},
  {"Sammenholdt med","en helhetlig","implementering","utvides","helseutfordringene","i motsetning til","leveransekonseptet"},
  {"På grunn av","en manglende","styringsinnsats","dokumenteres","helseproduksjonen","innenfor","innsatsfokuseringen"},
  {"Med hensyn til","en særlig","innovasjon","spores","fastlegenes produksjonsevne","i tillegg til","helseforetaket"},
  {"Under forutsetning av","en løpende","forventningsjustering","innhentes","rehabiliteringspotensialet","gjennom","ventelisteskandalene"},
  {"Etter en totalvurdering av","en langsiktig","orientering","adresseres","samhandlingskompetansen","ut fra","tjenesteintegreringen"},
  {"Uten hensyn til","en bærekraftig","utvikling","stabiliseres","forsvarlighetskravene","med sikte på","kjernevirksomheten"},
  {"Avhengig av","en resultatorientert","målhorisont","genereres","samhandlingskoordineringen","på tvers av","pasientsskadeerstatningen"},
  {"På grunnlag av","en tverrfaglig","arena","stimuleres","avviksmeldingene","på linje med","kvalitetsarbeidet"},
  {"I og med","en kunnskapsbasert","synergi","balanseres","fagkoordineringen","utenom","systemsvikten"},
  {"Under henvisning til","en inkluderende","avstemning","ivaretas","helseproblematikken","i forlengelsen av","helsereformene"},
  {"Gitt","en representativ","beskrivelse","dokumenteres","visualiseringen","innenfor rammen av","kommunepolitikken"},
  {"I lys av","en implisitt","gjengivelse","ivaretas","byggesøknaden","i motsetning til","samordningsplikten"},
  {"Med bakgrunn i","en konkret","søknad","utredes","materialiteten","i tillegg til","saksbehandlingstiden"},
  {"I forhold til","en feilaktig","skjemautfylling","fastslås","beskaffenheten","gjennom","tiltakshaveren"},
  {"Sett hen til","en faktisk","råderett","meldes","kontrollerklæringen","parallelt med","dispensasjonssøknaden"},
  {"I og med","en nødvendig","nabovarsling","konkluderes","søknadsprosessen","for så vidt gjelder","reguleringsplanen"},
  {"Ifølge","en transparent","klagebehandling","betviles","vedtaksbegrunnelsen","på basis av","kartgrunnlaget"},
  {"Sammenliknet med","en langsiktig","saksbehandling","oppleves","forføyningen","innenfor","hjemmelsgrunnlaget"},
  {"Ut fra","en bærekraftig","samhandling","betraktes","gjennomføringsplanen","i forhold til","planvedtaket"},
  {"Uavhengig av","en representativ","prosessavklaring","estimeres","ansvarsbelegningen","med henblikk på","ansvarsretten"},
  {"Basert på","en kvalitativ","konkretisering","bedømmes","tiltaket","ved hjelp av","prosjekteringen"},
  {"Vedrørende","en søknadspliktig","innvilgelse","anbefales","igangsettingstillatelsen","på linje med","planforslaget"},
  {"Under henvisning til","en klanderverdig","kvalitetsbedømming","forhåndsvurderes","ferdigattesten","på tvers av","grunnboken"},
  {"Grunnet","en arkitekturbasert","ulempebetraktning","avklares","kvaliteten","knyttet til","planbestemmelsen"},
  {"Tatt i betraktning","en systematisk","tillatelse","preaksepteres","dispensasjonen","som en følge av","arealbruken"},
  {"Forutsatt","(en ressursmessig)","realitetsbehandling","fastsettes","samsvarserklæringen","begrunnet i","statlig arealplan"},
  {"Uten hensyn til","en vesentlig","arealoverføring","forankres","oppføringen","i kraft av","tomtefestelova"},
  {"Med sikte på","en midlertidig","godkjennelse","utløses","rammetillatelsen","på tross av","strandsonen"},
  {"Sett ut fra","en kvalifisert","omregulering","samordnes","fasadeendringen","i relasjon til","ansvarsretten"},
  {"Med grunnlag i","en frittliggende","rammetillatelse","vurderes","terrenginngrepet","i overensstemmelse med","tvingende sikkerhetshensyn"},
}

PRIVMSG:
  '^%psvada$': (s, d, a) =>
    words = {}
    wordN = 1
    for i=1,7 do
      line = svada[math.random(1, #svada)]
      word = line[wordN]
      table.insert(words, word)
      wordN = wordN + 1

    say table.concat(words, ' ')


Add the pending about the Entity\move solidType & sweep params

require "busted"
require "tests.mock_love"

require "LunoPunk.Entity"
require "LunoPunk.Graphic"
require "LunoPunk.Mask"
require "LunoPunk.utils.moonscript"

entity_sanity_check = ->
	e = Entity!
	assert.are.equal 0, e\x!
	assert.are.equal 0, e\y!
	e

describe "Entity", ->
	e = nil
	before_each ->
		e = entity_sanity_check!

	it "construct", ->
		assert.are.equal true, e.active
		assert.are.equal false, e.autoClear
		assert.are.equal 0, e\x!
		assert.are.equal 0, e\y!
		assert.are.equal 0, e.originX
		assert.are.equal 0, e.originY
		assert.are.equal 0, e.width
		assert.are.equal 0, e.height
		assert.are.equal true, e.visible
		assert.are.equal true, e.collidable
		assert.are.equal false, e.followCamera

		-- Follow Camera coverage
		e.followCamera = true
		assert.are.equal 0, e\x!
		assert.are.equal 0, e\y!
		LP.camera.x += 1
		assert.are.equal 1, e\x!
		assert.are.equal 0, e\y!
		LP.camera.y -= 1
		assert.are.equal -1, e\y!
		e.followCamera = false
		assert.are.equal 0, e\x!
		assert.are.equal 0, e\y!

		e = Entity 10, 15
		assert.are.equal 10, e\x!
		assert.are.equal 15, e\y!
		assert.are.equal 0, e.originX
		assert.are.equal 0, e.originY
		assert.are.equal 0, e.width
		assert.are.equal 0, e.height

		g = Graphic!
		g.x, g.y = 25, 30
		e = Entity 10, 15, g
		assert.are.equal g, e\graphic!
		assert.are.equal 10, e\x!
		assert.are.equal 15, e\y!
		assert.are.equal 0, e.originX
		assert.are.equal 0, e.originY
		assert.are.equal 0, e.width
		assert.are.equal 0, e.height

		m = Mask!
		e = Entity 10, 15, g, m
		assert.are.equal m, e\mask!
		assert.are.equal 10, e\x!
		assert.are.equal 15, e\y!
		assert.are.equal 0, e.originX
		assert.are.equal 0, e.originY
		assert.are.equal 0, e.width
		assert.are.equal 0, e.height

	it "accessors", ->
		assert.are.equal 0, e\halfWidth!
		e.width = 10
		assert.are.equal 5, e\halfWidth!

		assert.are.equal 0, e\halfHeight!
		e.height = 20
		assert.are.equal 10, e\halfHeight!

		assert.are.equal 5, e\centerX!
		assert.are.equal 10, e\centerY!
		e.originX = 10
		assert.are.equal -5, e\centerX!
		e.originY = 10
		assert.are.equal 0, e\centerY!
		e\x 5
		assert.are.equal 0, e\centerX!
		e\y 10
		assert.are.equal 10, e\centerY!

		assert.are.equal -5, e\left!
		assert.are.equal 5, e\right!
		assert.are.equal 0, e\top!
		assert.are.equal 20, e\bottom!

		-- No scene
		assert.is.False e\onCamera!

		l = 5
		assert.is.Nil e\scene!
		assert.are.equal 10, e\layer!
		assert.are.equal l, e\layer l
		assert.are.equal 10, e\layer 10
		e\layer l
		assert.are.equal LP.BASELAYER!, e\layer false

		t = "Entity"
		assert.are.equal '', e\type!
		assert.are.equal t, e\type t
		assert.are.equal t, e\type!
		assert.are.equal t, e\type nil
		assert.are.equal '', e\type ''

		m = Mask!
		assert.is.Nil e\mask!
		assert.are.equal m, e\mask m
		assert.are.equal m, e\mask!
		assert.are.equal e, m.parent
		assert.are.equal m, e\mask nil
		assert.is.Nil e\mask false
		assert.is.Nil m.parent
		assert.is.Nil e\mask!

		g = Graphic!
		assert.is.Nil e\graphic!
		assert.are.equal g, e\graphic g
		assert.are.equal g, e\graphic!
		assert.is.Nil e\graphic false

		s = Scene!
		assert.is.Nil e\scene!
		assert.is.Nil e\world!
		assert.are.equal s, e\scene s
		assert.are.equal s, e\scene!
		assert.are.equal s, e\world!
		assert.is.Nil e\scene false
		assert.are.equal s, e\world s
		e\scene false

		-- Come back to some that branch if scene is set
		e\scene s
		assert.are.equal t, e\type t
		-- Hits a branch if e\type! is not ""
		assert.are.equal t, e\type t
		assert.are.equal l, e\layer l
		-- Hits a branch if e\layer! is not nil
		assert.are.equal l, e\layer l

		pending "Entity\\onCamera after scene is set"

	it "collidable", ->
		e = with Entity 5, 5
			.width = 10
			.height = 10
			\type "Entity"

		-- Collider
		c = with Entity 5, 5
			.width = 10
			.height = 10
			\type "Entity"

		-- No Scene
		assert.is.Nil e\collide "Entity", 10, 10

		LP.scene = Scene!
		LP.scene\add e
		LP.scene\add c
		LP.scene\updateLists!

		-- Not collidable
		e.collidable = false
		assert.is.Nil e\collide "Entity", 10, 10

		-- A collision
		e.collidable = true
		assert.are.equal c, e\collide "Entity", 10, 10
		assert.are.equal e, c\collide "Entity", 10, 10

		-- Bounds
		assert.are.equal c, e\collide "Entity", 5 - c.width, 5
		assert.are.equal c, e\collide "Entity", 5, 5 - c.height
		assert.are.equal e, c\collide "Entity", 5, 5
		assert.are.equal c, e\collide "Entity", 15, 15
		assert.are.equal e, c\collide "Entity", 15, 15

		-- Not a collision
		assert.is.Nil e\collide "Entity", 4 - c.width, 5
		assert.is.Nil e\collide "Entity", 5, 4 - c.height
		assert.is.Nil c\collide "Entity", 4 - e.width, 5
		assert.is.Nil c\collide "Entity", 5, 4 - e.height
		assert.is.Nil e\collide "Entity", 16, 15
		assert.is.Nil e\collide "Entity", 15, 16
		assert.is.Nil c\collide "Entity", 16, 15
		assert.is.Nil c\collide "Entity", 15, 16

		-- Mask collision
		m = Mask!
		e\mask Mask!
		c\mask Mask!
		assert.are.equal c, e\collide "Entity", 10, 10
		assert.are.equal e, c\collide "Entity", 10, 10

		-- Not a collision
		assert.is.Nil e\collide "Entity", 30, 30
		assert.is.Nil e\collide "Entity", 16, 16
		assert.are.equal c, e\collide "Entity", 15, 15

	it "moveBy", ->
		e\moveBy 1, 0
		assert.are.equal 1, e\x!
		assert.are.equal 0, e\y!

		e\moveBy 0, 1
		assert.are.equal 1, e\x!
		assert.are.equal 1, e\y!

		e\moveBy 1, 1
		assert.are.equal 2, e\x!
		assert.are.equal 2, e\y!

		e\moveBy -1, -1
		assert.are.equal 1, e\x!
		assert.are.equal 1, e\y!

		e\moveBy 0, 0
		assert.are.equal 1, e\x!
		assert.are.equal 1, e\y!

		pending "Entity\\moveBy solidType and sweep"

	it "moveTo", ->
		e\moveTo 5, 0
		assert.are.equal 5, e\x!
		assert.are.equal 0, e\y!

		e\moveTo 0, 5
		assert.are.equal 0, e\x!
		assert.are.equal 5, e\y!

		e\moveTo 0, 0
		assert.are.equal 0, e\x!
		assert.are.equal 0, e\y!

		pending "Entity\\moveTo solidType and sweep"

	it "moveTowards", ->
		e\moveTowards 5, 0, 2
		assert.are.equal 2, e\x!
		assert.are.equal 0, e\y!

		e\moveTowards 5, 0, 2
		assert.are.equal 4, e\x!
		assert.are.equal 0, e\y!

		e\moveTowards 5, 0, 2
		assert.are.equal 5, e\x!
		assert.are.equal 0, e\y!

		e\moveTowards 5, 0, 2
		assert.are.equal 5, e\x!
		assert.are.equal 0, e\y!

		e\moveTowards 5, 5, 2
		assert.are.equal 5, e\x!
		assert.are.equal 2, e\y!

		e\moveTowards 5, 5, 2
		assert.are.equal 5, e\x!
		assert.are.equal 4, e\y!

		e\moveTowards 5, 5, 2
		assert.are.equal 5, e\x!
		assert.are.equal 5, e\y!

		e\moveTowards 7, 7, 1
		assert.are.equal 6, e\x!
		assert.are.equal 6, e\y!

		pending "Entity\\moveTowards solidType and sweep"

	it "moveAtAngle", ->
		e\moveAtAngle 0, 1
		assert.are.equal 1, e\x!
		assert.are.equal 0, e\y!

		e\moveAtAngle 90, 1
		assert.are.equal 1, e\x!
		assert.are.equal 1, e\y!

		e\moveAtAngle 30, 2
		assert.are.equal 3, e\x!
		assert.are.equal 2, e\y!

		e\moveAtAngle -90, 1
		assert.are.equal 3, e\x!
		assert.are.equal 1, e\y!

		e\moveAtAngle 180, 1
		assert.are.equal 2, e\x!
		assert.are.equal 1, e\y!

		pending "Entity\\moveAtAngle solidType and sweep"

	it "clamp hitbox", ->
		e = with Entity 0, 0
			.width = 25
			.height = 25

		-- Horizontal clamp
		e\clampHorizontal 0, 25
		assert.are.equal 0, e\x!

		e\clampHorizontal 0, 20
		assert.are.equal -5, e\x!

		e\clampHorizontal 0, 25
		assert.are.equal 0, e\x!

		e\clampHorizontal 5, 30
		assert.are.equal 5, e\x!

		e\clampHorizontal 5, 20
		assert.are.equal -5, e\x!
		e\x 0

		-- Vertical clamp
		e\clampVertical 0, 25
		assert.are.equal 0, e\y!

		e\clampVertical 0, 20
		assert.are.equal -5, e\y!

		e\clampVertical 0, 25
		assert.are.equal 0, e\y!

		e\clampVertical 5, 30
		assert.are.equal 5, e\y!

		e\clampVertical 5, 20
		assert.are.equal -5, e\y!

	it "centerGraphicInRect", ->
		g = Graphic!
		e = with Entity!
			.width = 10
			.height = 10
			\graphic g

		assert.are_not.equal e\halfWidth!, e\graphic!.x
		assert.are_not.equal e\halfHeight!, e\graphic!.y
		e\centerGraphicInRect!
		assert.are.equal e\halfWidth!, e\graphic!.x
		assert.are.equal e\halfHeight!, e\graphic!.y

require "busted"
require "tests.mock_love"

require "LunoPunk.Entity"
require "LunoPunk.Graphic"
require "LunoPunk.Mask"
require "LunoPunk.utils.moonscript"

entity_sanity_check = ->
	e = Entity!
	assert.are.equal 0, e\x!
	assert.are.equal 0, e\y!
	e

describe "Entity", ->
	e = nil
	before_each ->
		e = entity_sanity_check!

	it "construct", ->
		assert.are.equal true, e.active
		assert.are.equal false, e.autoClear
		assert.are.equal 0, e\x!
		assert.are.equal 0, e\y!
		assert.are.equal 0, e.originX
		assert.are.equal 0, e.originY
		assert.are.equal 0, e.width
		assert.are.equal 0, e.height
		assert.are.equal true, e.visible
		assert.are.equal true, e.collidable
		assert.are.equal false, e.followCamera

		-- Follow Camera coverage
		e.followCamera = true
		assert.are.equal 0, e\x!
		assert.are.equal 0, e\y!
		LP.camera.x += 1
		assert.are.equal 1, e\x!
		assert.are.equal 0, e\y!
		LP.camera.y -= 1
		assert.are.equal -1, e\y!
		e.followCamera = false
		assert.are.equal 0, e\x!
		assert.are.equal 0, e\y!

		e = Entity 10, 15
		assert.are.equal 10, e\x!
		assert.are.equal 15, e\y!
		assert.are.equal 0, e.originX
		assert.are.equal 0, e.originY
		assert.are.equal 0, e.width
		assert.are.equal 0, e.height

		g = Graphic!
		g.x, g.y = 25, 30
		e = Entity 10, 15, g
		assert.are.equal g, e\graphic!
		assert.are.equal 10, e\x!
		assert.are.equal 15, e\y!
		assert.are.equal 0, e.originX
		assert.are.equal 0, e.originY
		assert.are.equal 0, e.width
		assert.are.equal 0, e.height

		m = Mask!
		e = Entity 10, 15, g, m
		assert.are.equal m, e\mask!
		assert.are.equal 10, e\x!
		assert.are.equal 15, e\y!
		assert.are.equal 0, e.originX
		assert.are.equal 0, e.originY
		assert.are.equal 0, e.width
		assert.are.equal 0, e.height

	it "accessors", ->
		assert.are.equal 0, e\halfWidth!
		e.width = 10
		assert.are.equal 5, e\halfWidth!

		assert.are.equal 0, e\halfHeight!
		e.height = 20
		assert.are.equal 10, e\halfHeight!

		assert.are.equal 5, e\centerX!
		assert.are.equal 10, e\centerY!
		e.originX = 10
		assert.are.equal -5, e\centerX!
		e.originY = 10
		assert.are.equal 0, e\centerY!
		e\x 5
		assert.are.equal 0, e\centerX!
		e\y 10
		assert.are.equal 10, e\centerY!

		assert.are.equal -5, e\left!
		assert.are.equal 5, e\right!
		assert.are.equal 0, e\top!
		assert.are.equal 20, e\bottom!

		-- No scene
		assert.is.False e\onCamera!

		l = 5
		assert.is.Nil e\scene!
		assert.are.equal 10, e\layer!
		assert.are.equal l, e\layer l
		assert.are.equal 10, e\layer 10
		e\layer l
		assert.are.equal LP.BASELAYER!, e\layer false

		t = "Entity"
		assert.are.equal '', e\type!
		assert.are.equal t, e\type t
		assert.are.equal t, e\type!
		assert.are.equal t, e\type nil
		assert.are.equal '', e\type ''

		m = Mask!
		assert.is.Nil e\mask!
		assert.are.equal m, e\mask m
		assert.are.equal m, e\mask!
		assert.are.equal e, m.parent
		assert.are.equal m, e\mask nil
		assert.is.Nil e\mask false
		assert.is.Nil m.parent
		assert.is.Nil e\mask!

		g = Graphic!
		assert.is.Nil e\graphic!
		assert.are.equal g, e\graphic g
		assert.are.equal g, e\graphic!
		assert.is.Nil e\graphic false

		s = Scene!
		assert.is.Nil e\scene!
		assert.is.Nil e\world!
		assert.are.equal s, e\scene s
		assert.are.equal s, e\scene!
		assert.are.equal s, e\world!
		assert.is.Nil e\scene false
		assert.are.equal s, e\world s
		e\scene false

		-- Come back to some that branch if scene is set
		e\scene s
		assert.are.equal t, e\type t
		-- Hits a branch if e\type! is not ""
		assert.are.equal t, e\type t
		assert.are.equal l, e\layer l
		-- Hits a branch if e\layer! is not nil
		assert.are.equal l, e\layer l

		pending "Entity\\onCamera after scene is set"

	it "collidable", ->
		e = with Entity 5, 5
			.width = 10
			.height = 10
			\type "Entity"

		-- Collider
		c = with Entity 5, 5
			.width = 10
			.height = 10
			\type "Entity"

		-- No Scene
		assert.is.Nil e\collide "Entity", 10, 10

		LP.scene = Scene!
		LP.scene\add e
		LP.scene\add c
		LP.scene\updateLists!

		-- Not collidable
		e.collidable = false
		assert.is.Nil e\collide "Entity", 10, 10

		-- A collision
		e.collidable = true
		assert.are.equal c, e\collide "Entity", 10, 10
		assert.are.equal e, c\collide "Entity", 10, 10

		-- Bounds
		assert.are.equal c, e\collide "Entity", 5 - c.width, 5
		assert.are.equal c, e\collide "Entity", 5, 5 - c.height
		assert.are.equal e, c\collide "Entity", 5, 5
		assert.are.equal c, e\collide "Entity", 15, 15
		assert.are.equal e, c\collide "Entity", 15, 15

		-- Not a collision
		assert.is.Nil e\collide "Entity", 4 - c.width, 5
		assert.is.Nil e\collide "Entity", 5, 4 - c.height
		assert.is.Nil c\collide "Entity", 4 - e.width, 5
		assert.is.Nil c\collide "Entity", 5, 4 - e.height
		assert.is.Nil e\collide "Entity", 16, 15
		assert.is.Nil e\collide "Entity", 15, 16
		assert.is.Nil c\collide "Entity", 16, 15
		assert.is.Nil c\collide "Entity", 15, 16

		-- Mask collision
		m = Mask!
		e\mask Mask!
		c\mask Mask!
		assert.are.equal c, e\collide "Entity", 10, 10
		assert.are.equal e, c\collide "Entity", 10, 10

		-- Not a collision
		assert.is.Nil e\collide "Entity", 30, 30
		assert.is.Nil e\collide "Entity", 16, 16
		assert.are.equal c, e\collide "Entity", 15, 15

	it "moveBy", ->
		e\moveBy 1, 0
		assert.are.equal 1, e\x!
		assert.are.equal 0, e\y!

		e\moveBy 0, 1
		assert.are.equal 1, e\x!
		assert.are.equal 1, e\y!

		e\moveBy 1, 1
		assert.are.equal 2, e\x!
		assert.are.equal 2, e\y!

		e\moveBy -1, -1
		assert.are.equal 1, e\x!
		assert.are.equal 1, e\y!

		e\moveBy 0, 0
		assert.are.equal 1, e\x!
		assert.are.equal 1, e\y!

		pending "Entity\\moveBy solidType and sweep"

	it "moveTo", ->
		e\moveTo 5, 0
		assert.are.equal 5, e\x!
		assert.are.equal 0, e\y!

		e\moveTo 0, 5
		assert.are.equal 0, e\x!
		assert.are.equal 5, e\y!

		e\moveTo 0, 0
		assert.are.equal 0, e\x!
		assert.are.equal 0, e\y!

		pending "Entity\\moveTo solidType and sweep"

	it "moveTowards", ->
		e\moveTowards 5, 0, 2
		assert.are.equal 2, e\x!
		assert.are.equal 0, e\y!

		e\moveTowards 5, 0, 2
		assert.are.equal 4, e\x!
		assert.are.equal 0, e\y!

		e\moveTowards 5, 0, 2
		assert.are.equal 5, e\x!
		assert.are.equal 0, e\y!

		e\moveTowards 5, 0, 2
		assert.are.equal 5, e\x!
		assert.are.equal 0, e\y!

		e\moveTowards 5, 5, 2
		assert.are.equal 5, e\x!
		assert.are.equal 2, e\y!

		e\moveTowards 5, 5, 2
		assert.are.equal 5, e\x!
		assert.are.equal 4, e\y!

		e\moveTowards 5, 5, 2
		assert.are.equal 5, e\x!
		assert.are.equal 5, e\y!

		e\moveTowards 7, 7, 1
		assert.are.equal 6, e\x!
		assert.are.equal 6, e\y!

	it "moveAtAngle", ->
		e\moveAtAngle 0, 1
		assert.are.equal 1, e\x!
		assert.are.equal 0, e\y!

		e\moveAtAngle 90, 1
		assert.are.equal 1, e\x!
		assert.are.equal 1, e\y!

		e\moveAtAngle 30, 2
		assert.are.equal 3, e\x!
		assert.are.equal 2, e\y!

		e\moveAtAngle -90, 1
		assert.are.equal 3, e\x!
		assert.are.equal 1, e\y!

		e\moveAtAngle 180, 1
		assert.are.equal 2, e\x!
		assert.are.equal 1, e\y!

	it "clamp hitbox", ->
		e = with Entity 0, 0
			.width = 25
			.height = 25

		-- Horizontal clamp
		e\clampHorizontal 0, 25
		assert.are.equal 0, e\x!

		e\clampHorizontal 0, 20
		assert.are.equal -5, e\x!

		e\clampHorizontal 0, 25
		assert.are.equal 0, e\x!

		e\clampHorizontal 5, 30
		assert.are.equal 5, e\x!

		e\clampHorizontal 5, 20
		assert.are.equal -5, e\x!
		e\x 0

		-- Vertical clamp
		e\clampVertical 0, 25
		assert.are.equal 0, e\y!

		e\clampVertical 0, 20
		assert.are.equal -5, e\y!

		e\clampVertical 0, 25
		assert.are.equal 0, e\y!

		e\clampVertical 5, 30
		assert.are.equal 5, e\y!

		e\clampVertical 5, 20
		assert.are.equal -5, e\y!

	it "centerGraphicInRect", ->
		g = Graphic!
		e = with Entity!
			.width = 10
			.height = 10
			\graphic g

		assert.are_not.equal e\halfWidth!, e\graphic!.x
		assert.are_not.equal e\halfHeight!, e\graphic!.y
		e\centerGraphicInRect!
		assert.are.equal e\halfWidth!, e\graphic!.x
		assert.are.equal e\halfHeight!, e\graphic!.y