profanity_filter 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,107 @@
1
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam tempus magna a dui. Nam lorem. Phasellus id augue quis mi imperdiet luctus. Mauris vel velit sed magna sagittis volutpat. Etiam hendrerit. Vestibulum tempor. Phasellus venenatis purus pretium nisl. Phasellus eget enim. Maecenas mattis varius tortor. Aliquam erat volutpat. Morbi lobortis sem sit amet tellus. Aliquam hendrerit cursus lectus. Vivamus eu tortor non orci tempor accumsan. Cras varius orci non libero. Vivamus magna mi, eleifend sed, placerat a, egestas nec, lacus. Cras elit ipsum, pharetra in, ultrices sit amet, mollis ac, leo. Quisque et lorem.
2
+
3
+ Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Maecenas quis elit. Nam a eros. Proin mauris. Nam mollis nisi in metus. Vivamus suscipit. Nulla vel sem. Vestibulum eget erat in est placerat euismod. Donec pellentesque, justo et laoreet consectetuer, mi mauris faucibus libero, varius egestas velit est a libero. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec ullamcorper, diam id scelerisque porttitor, enim nisi fringilla velit, ut ultricies dolor turpis at nisl.
4
+
5
+ Nullam elit. Nulla auctor consectetuer risus. Nunc volutpat lacinia nisl. Nulla facilisi. Nunc volutpat, elit in bibendum porta, diam dolor vulputate leo, et hendrerit tortor tellus ornare ante. Praesent vestibulum aliquet elit. Aliquam erat volutpat. Fusce sed urna eu libero placerat semper. Fusce nec elit. Nulla at enim. Nam ut mi. Morbi at est. Quisque id arcu vel ipsum consectetuer ultrices. Vivamus id tellus dictum nulla porta pharetra. Nullam hendrerit venenatis tellus. Suspendisse potenti. Duis in lacus et metus porta tempus. Quisque ut nunc a turpis vehicula placerat. Donec libero ligula, luctus ac, aliquet mollis, laoreet vel, nunc. Etiam iaculis vehicula enim.
6
+
7
+ Suspendisse cursus risus a diam. In nisl. Nulla placerat tellus nec massa. Vestibulum ultricies nisl non dui. Pellentesque orci lorem, rutrum in, laoreet a, egestas nec, ante. Sed vestibulum. Phasellus pellentesque elit ultricies massa. In tristique nibh sed erat. In lacus neque, auctor vel, sodales ut, bibendum sit amet, ligula. Nulla facilisi. Quisque dolor nunc, gravida ut, imperdiet sed, ornare ac, orci. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Etiam laoreet. Proin auctor. Proin mi. Aenean a est in turpis volutpat tincidunt. Nullam tincidunt lectus sed felis ultrices molestie. Pellentesque cursus, magna ut interdum ultrices, dolor arcu feugiat odio, mollis dictum mauris sem quis diam. Nulla eget leo eu elit condimentum imperdiet.
8
+
9
+ Donec viverra turpis sed magna. Sed lobortis, eros scelerisque aliquet eleifend, arcu purus auctor enim, a vulputate mi dui sit amet massa. Phasellus augue dolor, aliquam at, rutrum in, auctor vitae, leo. Aliquam lorem. Etiam faucibus semper tellus. Vestibulum tincidunt scelerisque massa. Fusce pellentesque nulla vitae massa. Nullam fermentum ante et leo. Cras id mi vel tellus pretium ultricies. Praesent volutpat, purus tempus luctus semper, ligula diam viverra mi, sed gravida nibh enim ac nisl. Ut id magna a elit rhoncus egestas. In nibh justo, gravida in, semper vitae, gravida suscipit, velit. Aenean facilisis, nisi lacinia elementum dignissim, enim neque cursus orci, id placerat turpis quam tempus ipsum. Vivamus quis pede. Morbi volutpat, nibh id sagittis ullamcorper, risus felis commodo libero, eu imperdiet elit est at mauris. Curabitur velit urna, tempus ac, auctor eu, mattis id, est. Cras enim leo, consectetuer ac, rhoncus ac, venenatis ac, mauris. Etiam odio. Curabitur urna massa, rhoncus nec, dignissim rutrum, congue eget, pede. Vestibulum nulla mauris, hendrerit in, sagittis non, ultricies nec, odio.
10
+
11
+ Donec eget tortor ut quam pharetra gravida. Praesent sit amet neque. Fusce dolor augue, tempus eu, volutpat vel, blandit sit amet, dolor. Morbi eu risus sed ipsum hendrerit posuere. Nam aliquam dictum arcu. Nulla et purus eu urna placerat ultrices. Suspendisse pharetra lacus a elit. Proin vel massa. Vestibulum neque ligula, dapibus eu, mattis et, porta iaculis, nibh. Proin congue. Mauris risus velit, egestas sed, rhoncus quis, pretium non, dui. Vivamus convallis. Duis imperdiet posuere erat.
12
+
13
+ Donec vulputate felis quis nulla. Praesent at augue nec felis euismod aliquet. Maecenas accumsan nunc quis nisi. Sed dolor. Etiam in tortor in orci hendrerit pulvinar. Maecenas sem diam, sollicitudin eu, feugiat ut, ultricies suscipit, orci. Nunc diam nunc, blandit eu, pulvinar vitae, congue in, nulla. Curabitur rhoncus sem ut nisi. Curabitur condimentum. Nunc sollicitudin. Vestibulum nec urna sit amet sapien faucibus semper. Praesent odio ante, porttitor non, commodo ut, iaculis nec, enim. Fusce lacinia, arcu ac dapibus vestibulum, tellus felis malesuada libero, vitae laoreet mauris sem at tellus. Donec scelerisque metus ut sapien. Vivamus vitae ligula nec turpis feugiat varius. In hac habitasse platea dictumst. Mauris sollicitudin mattis leo.
14
+
15
+ Integer semper. Praesent neque augue, laoreet placerat, sollicitudin in, volutpat vitae, nibh. Ut justo magna, lobortis sed, dictum non, vestibulum id, mi. Nunc hendrerit lacinia purus. Morbi diam dolor, cursus a, dictum et, sodales vitae, neque. Nulla eros pede, mollis eu, consectetuer in, semper sit amet, nunc. Nulla facilisi. Vivamus augue metus, condimentum vitae, adipiscing eget, blandit eu, arcu. Nunc vel ipsum. Nam arcu metus, ultricies rutrum, aliquet eu, ornare eget, est. Etiam semper, ligula quis dapibus luctus, odio tortor suscipit leo, non semper orci mi eu enim. Maecenas laoreet placerat tellus. Pellentesque porttitor lorem eu turpis. Donec volutpat, augue ut tempus tristique, est arcu consequat nisi, gravida interdum lectus ligula vitae dolor. Nullam commodo enim eget velit.
16
+
17
+ Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris at ipsum varius libero tempor mollis. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Duis ullamcorper turpis vel massa. Pellentesque hendrerit. Cras fermentum rutrum est. Aenean auctor auctor risus. Morbi adipiscing elit in velit. Fusce mi. Aenean lectus massa, tempor accumsan, blandit id, facilisis et, nisl. Nunc sed nisi.
18
+
19
+ In risus sem, rutrum vel, suscipit a, aliquam vel, tortor. Vivamus at felis quis diam aliquam aliquet. Morbi quis ligula nec magna consectetuer dignissim. In commodo pharetra neque. Maecenas enim. Praesent ante eros, dictum vehicula, porttitor vel, lobortis ut, ligula. Duis pede. Quisque orci. Nam quam. Suspendisse velit mauris, pretium id, viverra in, venenatis non, sapien. Aliquam massa. Phasellus adipiscing mi sed justo.
20
+
21
+ Nunc blandit euismod purus. Nulla justo turpis, porttitor nec, malesuada nec, congue vel, tortor. Suspendisse venenatis purus vitae arcu. Vestibulum est risus, vestibulum a, auctor id, condimentum et, urna. Cras nunc odio, facilisis nec, pretium ac, dignissim quis, leo. Aliquam posuere, augue quis suscipit aliquam, pede nibh consectetuer nulla, ac aliquet felis urna ut est. Sed nec lorem in tortor tristique semper. Duis quis tellus. Sed iaculis enim eget tellus. Duis vehicula feugiat velit. Nullam elit pede, pretium at, euismod non, adipiscing at, pede. Integer mi sapien, rutrum ac, iaculis vel, egestas quis, odio.
22
+
23
+ Nulla viverra dui vitae nulla. Pellentesque lacinia commodo nunc. Vestibulum est. Mauris pede. Maecenas in libero. Ut nulla quam, vestibulum eget, pretium nec, rutrum vel, velit. Nunc et lacus. In hac habitasse platea dictumst. Curabitur luctus nisi non sapien. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
24
+
25
+ Vestibulum purus libero, pellentesque non, volutpat nec, accumsan rutrum, felis. Curabitur mattis porta urna. Mauris sit amet pede. Cras ornare cursus mauris. Ut mollis tortor ac est. Aliquam molestie, erat non sodales convallis, ipsum eros mollis turpis, et ultrices nulla leo non velit. Suspendisse dignissim nulla sit amet ligula. Ut nec erat volutpat nisi dictum tempor. Curabitur eget neque nec erat venenatis fringilla. Aliquam egestas porttitor mauris. Praesent et mi ut massa mattis elementum. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Ut nisi arcu, cursus sed, ornare a, blandit at, est. Phasellus sit amet mauris. Phasellus vulputate. Vivamus convallis, augue sed feugiat cursus, purus sapien venenatis justo, posuere euismod sem odio vitae est. Sed mattis urna a nisl.
26
+
27
+ Nullam nunc tellus, porttitor quis, sagittis sit amet, molestie eu, risus. Fusce vel tortor. Donec lorem. Aliquam euismod felis. Praesent ultricies eleifend turpis. Proin sit amet odio non massa lacinia porttitor. Cras bibendum nunc et nisi. Aliquam dapibus fermentum massa. Morbi quis metus lobortis leo pharetra consequat. In leo.
28
+
29
+ Aliquam erat volutpat. Curabitur sed erat. Donec a eros sed dui adipiscing faucibus. Nulla congue, dui nec molestie aliquet, dolor sapien ornare lectus, at suscipit magna dolor non tellus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nulla non purus ut orci venenatis dignissim. Duis varius, odio quis vehicula tempus, metus quam porta ipsum, dignissim consectetuer pede nisl non mi. Vestibulum aliquet. Nulla auctor. Vestibulum rutrum eleifend dui. Nulla porta fermentum lectus. Nam vehicula neque non nibh. Nunc blandit dictum dolor. Sed vel orci quis sem sollicitudin egestas. In vestibulum, lorem nec tempus scelerisque, mi pede auctor tellus, nec laoreet risus erat sit amet felis. Suspendisse non tortor. Vestibulum mattis malesuada ligula. Maecenas sit amet neque. Pellentesque non augue vel lectus commodo molestie. Aenean non nisi.
30
+
31
+ Quisque pulvinar. Integer elit leo, pretium a, aliquet a, blandit vel, lorem. Vivamus lobortis. Nam arcu. Donec semper, mauris vitae tincidunt hendrerit, risus tellus lobortis mauris, nec tincidunt diam magna et nibh. Nunc ut lacus. Nullam nibh eros, porta tempus, pulvinar at, dapibus a, sem. Aenean tincidunt, nunc et volutpat viverra, tortor diam eleifend mi, volutpat fermentum augue metus vitae dolor. Nullam at felis. Vivamus sagittis semper est.
32
+
33
+ Sed ultrices, risus vel viverra laoreet, neque purus consequat justo, ut condimentum leo quam cursus turpis. Quisque semper ultricies massa. Suspendisse hendrerit dignissim leo. Integer a magna. Vestibulum vehicula scelerisque nibh. Nulla non felis at massa ornare ultricies. Pellentesque risus risus, tincidunt et, imperdiet sit amet, rhoncus ut, nibh. Sed nisi urna, ultricies sit amet, mattis vel, tincidunt a, dolor. Curabitur eleifend faucibus quam. Sed pulvinar elit vel nunc.
34
+
35
+ Integer sem eros, fermentum sollicitudin, vulputate vel, euismod non, libero. Nullam turpis felis, ornare ut, molestie a, rhoncus quis, sem. In vestibulum tempor ante. Proin non dolor a diam sodales congue. Phasellus est est, ornare vel, tincidunt at, placerat interdum, tortor. Sed fringilla pede vitae nisi. Donec blandit ipsum a leo. Mauris tempus fringilla velit. Curabitur quis nisl ultricies diam pellentesque consequat. Nunc dui leo, porttitor ut, sagittis mollis, pellentesque id, velit. Donec nec diam a massa varius dictum.
36
+
37
+ Nulla risus quam, semper quis, convallis sed, luctus id, tellus. Nunc ac arcu. Sed a tortor vitae urna euismod laoreet. Sed porta viverra diam. Suspendisse vitae dui vel dolor laoreet fermentum. Nunc vehicula tristique magna. Cras nec turpis. Sed semper interdum nibh. Aenean cursus. Nunc eget mauris. Etiam non nunc. Donec pede nulla, congue quis, elementum consequat, placerat et, velit.
38
+
39
+ Quisque tincidunt est ut nisi. Aenean sit amet felis id odio tincidunt vehicula. Nulla et enim. Mauris id erat et elit tempor tincidunt. Quisque nec sapien hendrerit magna pharetra imperdiet. Proin malesuada, ipsum sit amet iaculis vehicula, nisl turpis iaculis libero, eu viverra arcu ante sollicitudin nisi. Maecenas venenatis massa id lectus ultricies euismod. Donec sapien augue, cursus nec, scelerisque vel, dictum id, dui. Mauris condimentum porta ante. Phasellus eu urna vel diam sodales rutrum. Quisque id mauris. Sed dictum condimentum est.
40
+
41
+ Integer nunc metus, gravida sed, vehicula nec, laoreet nec, ante. Vestibulum at nisi fermentum felis suscipit ornare. Nam rutrum, justo vitae egestas feugiat, augue ipsum sollicitudin nisi, quis rhoncus erat nibh a lorem. Etiam vel lorem. Nunc ipsum nisi, congue et, mollis in, ultrices nec, enim. Aenean diam risus, pretium sit amet, cursus non, convallis eget, lectus. Vestibulum consequat mattis risus. Sed volutpat suscipit libero. Integer ut turpis. Cras ut lacus eu dui ullamcorper vulputate. Duis suscipit metus eu nisl. Fusce leo. Phasellus semper consequat lacus. Integer neque eros, vulputate at, aliquam vel, faucibus a, turpis. Pellentesque sit amet elit vitae dui dignissim pellentesque.
42
+
43
+ Nunc nisl purus, tempor et, bibendum sed, iaculis vel, lorem. Donec ac massa eget lorem suscipit egestas. Maecenas lacinia leo pellentesque sem. Maecenas nunc purus, mattis in, mollis in, varius a, magna. Pellentesque vel nulla. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec justo. Cras sapien. Mauris imperdiet mauris nec metus. Suspendisse sit amet velit. Maecenas nisl. Nunc vel metus vitae augue eleifend rhoncus.
44
+
45
+ Curabitur tempor malesuada nulla. Maecenas sagittis urna nec pede. Fusce quis lectus. Donec tellus. Phasellus porta porttitor nisl. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vestibulum ipsum. Sed vulputate bibendum quam. Donec commodo felis non massa. Vivamus metus. Donec pretium, pede at euismod dignissim, pede eros tempor tortor, nec luctus augue velit at lorem. Morbi convallis porttitor lorem. Sed eu diam in est pulvinar luctus. Praesent in ligula in lacus fermentum varius. Phasellus quis purus. Nunc quis est. Etiam justo lorem, suscipit et, viverra ac, bibendum ac, lacus. Morbi adipiscing sollicitudin erat.
46
+
47
+ Nunc nec ante. Nullam consectetuer dolor vitae elit. Nam pretium gravida turpis. Nam commodo commodo velit. Phasellus at augue vitae risus aliquam imperdiet. Sed tristique congue metus. Sed convallis. Donec egestas dui faucibus orci. Vestibulum faucibus ligula in purus. Nullam aliquet. Maecenas quam tortor, pellentesque quis, laoreet eget, porta pretium, ligula. Nam cursus, nisl eu posuere sagittis, dolor lacus ultricies est, dictum gravida ante est in orci. Duis luctus, magna ac gravida iaculis, enim urna scelerisque enim, eget dapibus augue sapien a magna.
48
+
49
+ Aliquam lacus ligula, volutpat et, congue vel, rutrum a, ligula. In faucibus blandit turpis. Proin enim. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean ultricies, turpis non vulputate placerat, magna nisi porttitor nunc, nec accumsan elit erat auctor urna. Sed consequat ligula mollis velit. Maecenas sit amet elit vitae eros molestie tempor. Nam a nulla. Sed malesuada diam non metus. Donec mauris magna, accumsan quis, sollicitudin non, rhoncus ut, velit. Suspendisse vitae massa at enim commodo tristique. Nulla facilisis ultricies tortor. Duis eu tortor.
50
+
51
+ Ut rutrum quam sed lectus. Aliquam arcu purus, semper non, varius id, blandit et, mi. Fusce imperdiet, eros at elementum laoreet, leo quam dignissim metus, eget placerat nulla ligula id augue. Curabitur malesuada nisl eget est. Nulla magna elit, convallis id, laoreet non, aliquet et, mauris. In hac habitasse platea dictumst. Vestibulum rhoncus placerat ante. Vivamus semper volutpat velit. Nam et massa. Fusce commodo, magna nec condimentum bibendum, elit orci luctus pede, sed rhoncus velit tortor id nulla. Vestibulum tristique egestas mauris. Donec lobortis magna sollicitudin massa. Quisque dolor tellus, bibendum quis, sodales commodo, convallis vitae, nisi.
52
+
53
+ Phasellus libero metus, malesuada ut, convallis vitae, lobortis eget, nulla. Sed elementum enim vestibulum quam vestibulum interdum. In quis ante ac enim fringilla elementum. Ut a metus. Aenean justo. Etiam in mauris. Aliquam erat volutpat. Fusce vitae eros. Ut bibendum convallis mauris. Nullam orci massa, scelerisque a, porta at, tincidunt a, augue. Donec lacus pede, dapibus sit amet, lacinia vel, hendrerit in, nisi. Suspendisse commodo leo a nibh. Morbi id enim. Vestibulum convallis eleifend sapien. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc at purus semper ligula egestas molestie. Nunc massa libero, faucibus ut, convallis ac, semper sit amet, augue.
54
+
55
+ Morbi ultricies sapien in massa. Duis ac nunc. Quisque quam. Praesent ac tortor vitae quam facilisis facilisis. Sed dictum. Donec neque lorem, laoreet eget, adipiscing eget, fringilla et, nulla. Suspendisse tortor felis, ultrices quis, imperdiet vitae, sodales vitae, risus. Sed nisi ipsum, viverra sed, auctor nec, blandit eget, nibh. Maecenas vel sem. Morbi et libero. Cras cursus metus quis purus. Praesent quam. Sed justo. Nunc malesuada, mauris sit amet hendrerit molestie, eros magna fermentum est, a volutpat mauris quam at orci.
56
+
57
+ In cursus, neque ac iaculis imperdiet, felis leo ornare nulla, vitae facilisis neque velit non nisi. Nunc et elit in odio dignissim euismod. Nunc mollis lectus et lorem. Vivamus volutpat. Cras pellentesque urna et odio. Pellentesque semper mollis tortor. Fusce volutpat. Nullam magna justo, pulvinar ut, egestas ac, iaculis et, tellus. Suspendisse iaculis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
58
+
59
+ Nulla facilisi. Nunc et nibh sit amet nibh tincidunt placerat. Aenean neque. Phasellus vitae dolor. Morbi in felis. Donec justo metus, mattis id, viverra tincidunt, lobortis non, diam. Sed sit amet justo eget sapien congue interdum. Sed risus lacus, lobortis et, volutpat vel, pretium dapibus, ante. In hac habitasse platea dictumst. Donec est libero, feugiat eget, lobortis eget, dictum faucibus, massa. Vestibulum leo leo, viverra ac, dictum nec, malesuada vel, justo. Curabitur dolor felis, fringilla nec, condimentum in, dignissim eget, enim. Quisque sollicitudin, sem nec luctus vulputate, augue tellus sagittis tellus, sit amet volutpat risus dui nec odio. Vivamus ullamcorper, tellus ut pellentesque ultricies, massa eros accumsan est, in fringilla pede turpis vel velit. Nunc erat mi, consectetuer nec, pulvinar pharetra, consequat sit amet, mi. Suspendisse dignissim, mauris nec posuere iaculis, risus sapien faucibus sem, sit amet laoreet tortor tellus vel libero. Vestibulum vel libero. Praesent convallis tincidunt elit.
60
+
61
+ Ut gravida congue dolor. Nulla enim orci, mollis et, luctus a, porttitor eu, leo. Sed euismod suscipit arcu. In sit amet velit. Quisque a risus. Vestibulum bibendum mi a elit. Aenean lorem dolor, ornare ac, scelerisque vitae, imperdiet quis, purus. Nam libero. Vivamus vehicula aliquam enim. Duis tempus. Pellentesque at massa in arcu euismod congue. Maecenas risus neque, accumsan eu, ultricies sed, pretium id, nisi. Aenean ut velit. Donec odio odio, volutpat eget, fringilla eget, consequat in, purus. Ut nulla neque, imperdiet pulvinar, tempor at, auctor hendrerit, mi. Etiam lectus sem, malesuada in, ullamcorper in, auctor vel, massa. Nam purus turpis, lacinia eget, laoreet sit amet, luctus consectetuer, mi.
62
+
63
+ In euismod neque at libero. Sed mattis ante et purus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi imperdiet. Morbi metus dui, vehicula vitae, auctor eget, sodales ut, diam. Duis mattis iaculis massa. Nulla feugiat placerat nunc. Pellentesque in quam. Mauris id dui a sapien vehicula scelerisque. Duis nec nisi in arcu imperdiet gravida. Proin a nulla. Aenean sollicitudin lectus vel arcu. Curabitur nulla pede, volutpat a, laoreet molestie, egestas a, augue. Vivamus a lacus. Cras nisi eros, viverra ut, rhoncus sed, viverra hendrerit, turpis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse nec sapien. Donec consequat enim. Aenean pharetra. Aliquam rhoncus arcu non lectus.
64
+
65
+ Aenean pede. Vivamus tincidunt accumsan velit. Donec nisi. Nulla quis mi. Integer condimentum, velit in bibendum aliquam, felis erat blandit mi, eu molestie sapien nisi id metus. Curabitur iaculis tortor ac sapien. Maecenas cursus lacinia lacus. Etiam lacinia egestas felis. Donec eu lacus sed justo bibendum commodo. Nam eu elit.
66
+
67
+ Nullam massa. Donec porttitor. Maecenas est augue, varius quis, pulvinar at, porta sit amet, nisl. Curabitur dapibus faucibus dui. Donec turpis leo, tincidunt eget, lobortis sit amet, ullamcorper et, risus. Aenean sit amet lorem a eros ultricies bibendum. Sed mollis felis quis turpis. Maecenas convallis augue aliquet velit. Curabitur sed nisi. Fusce ut libero. Cras sollicitudin, dui non ornare dapibus, ligula arcu vulputate elit, eu rhoncus dui erat ut velit. Duis a ipsum. Etiam luctus. Nam tortor odio, tempor eget, sagittis eu, tempor non, lacus. Sed risus nunc, aliquet gravida, gravida at, laoreet ac, felis. Phasellus velit ligula, congue id, pretium id, sagittis quis, sem. Quisque elit orci, scelerisque sit amet, suscipit at, consectetuer vitae, mauris. Ut eget eros a mauris feugiat ornare. In et ligula.
68
+
69
+ Aenean ac nisi pretium enim pellentesque facilisis. Mauris ante libero, condimentum a, tempus venenatis, suscipit vel, dolor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec pede. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Praesent lacus tortor, porttitor vel, consequat sed, fringilla vitae, tellus. Integer volutpat mauris pharetra ante. Sed enim. Etiam id velit. Nunc sed lorem id felis fringilla volutpat. Mauris nibh nunc, cursus eu, placerat et, laoreet sed, enim. Maecenas ultricies. Ut eget sem id neque fermentum aliquam. Nunc viverra risus vel orci. In porta placerat lectus. Ut ipsum est, mattis vitae, ultricies vitae, dapibus at, urna.
70
+
71
+ Quisque quis neque nec justo adipiscing varius. Nulla a tortor nec mi scelerisque varius. Mauris eget leo ut urna blandit adipiscing. Praesent in lectus. Curabitur eu ante. Etiam mi urna, aliquet vulputate, ultricies vel, rutrum id, turpis. Phasellus sed ipsum. Etiam elit purus, rutrum sit amet, sodales at, consequat at, dolor. Phasellus iaculis molestie nisl. Sed eu augue nec turpis malesuada tristique. Fusce dictum tincidunt dolor. Aliquam odio.
72
+
73
+ Nulla facilisi. Nam porttitor, arcu non mattis cursus, massa dolor convallis risus, sit amet venenatis nibh nisl at risus. Aenean iaculis eros et orci. Curabitur nec ante quis turpis semper consectetuer. Curabitur laoreet nisl non leo. Quisque in risus. Vivamus vehicula, diam eget tempor vulputate, quam lorem fermentum felis, sit amet rhoncus augue erat id justo. Duis at lectus sit amet tellus pellentesque vulputate. Cras faucibus viverra quam. Donec augue diam, pulvinar et, condimentum vel, lobortis sed, tortor.
74
+
75
+ Morbi sapien. Duis vel nisi nec neque rhoncus molestie. Nulla sollicitudin. Nunc ac turpis at sem lobortis imperdiet. Duis et erat et enim hendrerit condimentum. Sed id urna. Integer est velit, hendrerit et, ultricies sit amet, bibendum sit amet, sapien. Quisque sit amet magna. Aenean tempor lacinia ligula. Nulla luctus aliquet justo. Vivamus congue leo eu neque. Quisque eu lectus.
76
+
77
+ Nam a pede at eros blandit egestas. Donec lacinia erat ut eros. Sed ut massa vitae lacus commodo iaculis. Phasellus neque ipsum, sollicitudin a, cursus a, tristique non, eros. Aliquam ultrices. Pellentesque ipsum. In interdum felis a augue. Vestibulum ac sem vel massa consectetuer tristique. Proin tristique rhoncus velit. Praesent ac magna. Nullam imperdiet pede at quam. Fusce tincidunt hendrerit lacus. Etiam dui purus, venenatis quis, dictum nec, tempus vel, enim. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
78
+
79
+ Morbi neque nisl, ullamcorper sit amet, tincidunt non, placerat in, ligula. Aliquam ut quam. In cursus placerat risus. Quisque vehicula, elit a vestibulum scelerisque, ante libero rutrum lectus, vitae vulputate est nulla nec risus. Pellentesque egestas ipsum id lorem. Phasellus convallis augue blandit risus tempor venenatis. Phasellus in risus sit amet ligula lobortis dignissim. In posuere quam in massa. Nullam aliquam eros nec nulla. Nunc molestie leo ut tellus. Etiam euismod, lorem nec aliquam facilisis, est mauris vulputate neque, pharetra semper nunc lacus at enim. Praesent erat ligula, eleifend sit amet, dapibus sed, interdum lobortis, urna.
80
+
81
+ Aliquam non lectus. Pellentesque nunc. Nunc ut odio. Donec at justo eget nibh facilisis vehicula. Suspendisse viverra cursus pede. Pellentesque rhoncus, magna vitae consectetuer rhoncus, diam risus blandit sapien, sit amet gravida est neque vel neque. Integer tincidunt rutrum mauris. Maecenas at lacus quis turpis egestas tristique. In aliquet cursus diam. Etiam sodales lobortis odio. In pede mauris, aliquet vel, adipiscing sed, dictum sed, justo. Vestibulum semper dictum lacus. Nam massa eros, lacinia ac, fermentum ac, ultricies sit amet, elit. Praesent quam elit, scelerisque at, vestibulum id, feugiat quis, augue. Praesent venenatis risus eu libero. Vivamus at nisl. Donec pellentesque interdum mauris.
82
+
83
+ Morbi at diam. Sed lectus dui, lacinia ac, varius in, iaculis et, dolor. Maecenas egestas ante eu sapien. Donec dapibus pellentesque odio. Nulla sodales, enim ut lacinia elementum, leo ligula interdum erat, eu pretium justo diam et est. Vivamus eros nunc, fringilla eu, faucibus vitae, laoreet eu, sapien. Maecenas vestibulum urna nec ligula. Duis nisi turpis, posuere et, venenatis et, fermentum non, dolor. Sed tellus elit, fringilla eget, adipiscing rhoncus, faucibus id, metus. Donec risus felis, aliquam eget, tincidunt in, feugiat non, massa. Nunc quis urna vitae lacus posuere venenatis. Nunc at elit sed eros iaculis lacinia. Praesent condimentum lectus vel mauris. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Donec pharetra iaculis ipsum. Suspendisse porta. Fusce sollicitudin velit id dui. Integer id erat. Integer suscipit sem in mi varius congue. Fusce rutrum, erat nec bibendum sagittis, metus tellus egestas erat, et tempus lorem diam scelerisque urna.
84
+
85
+ Pellentesque porta. Pellentesque condimentum sagittis arcu. Vestibulum mollis cursus arcu. In quis nisl vitae velit suscipit molestie. Donec mauris mauris, vehicula id, egestas sit amet, adipiscing at, diam. Quisque porttitor lacinia nibh. Proin placerat. Sed non justo. Curabitur eu purus. Aenean iaculis enim nec sapien. Nunc eros. Nam posuere rhoncus nulla.
86
+
87
+ Proin libero lacus, congue non, congue quis, faucibus id, elit. Nunc placerat, turpis vel fermentum imperdiet, arcu odio facilisis est, ac elementum leo velit eget justo. Proin quis mi. Curabitur a ante. Etiam sit amet nisl ut elit consequat fermentum. Etiam molestie ullamcorper ligula. Sed luctus pellentesque nulla. Vivamus eu lectus. Praesent imperdiet. Sed ac quam. Vivamus sagittis consequat lacus. Aenean ultrices odio in ligula. Praesent tempus arcu vitae enim.
88
+
89
+ Phasellus in turpis. Nullam consectetuer. Integer lacinia, lectus ut euismod pretium, nunc nunc consectetuer enim, quis feugiat mauris tortor nec leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Suspendisse purus massa, luctus ac, mattis sed, mattis sed, magna. Aenean euismod, magna eu semper pharetra, ipsum quam feugiat diam, sit amet vulputate nulla est at ipsum. Suspendisse ultricies blandit enim. Mauris sit amet sapien. Quisque rhoncus risus sed diam. Maecenas pharetra.
90
+
91
+ Donec eget enim in sapien sodales mollis. Mauris id neque. Aliquam scelerisque lectus eget dui. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse ut libero. Nam tristique venenatis lacus. Suspendisse quis pede id elit accumsan ullamcorper. Phasellus sit amet leo at lacus dapibus elementum. Quisque a mi. Donec id augue. Curabitur elementum augue quis eros. Donec metus sapien, interdum in, egestas nec, lacinia a, felis. Fusce iaculis enim id enim. Nam felis mauris, dictum at, pulvinar pellentesque, luctus at, elit. Nulla lorem. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Etiam semper urna et est. Pellentesque at leo sed diam aliquam lobortis. Cras tempor pede sit amet lorem.
92
+
93
+ Nulla facilisi. Integer rhoncus. Ut urna purus, rhoncus ac, vestibulum at, vestibulum vitae, massa. In interdum luctus nisi. Duis et neque in nulla dignissim aliquam. Fusce convallis. Ut porttitor interdum est. Maecenas dapibus, purus ut auctor aliquam, est sem blandit diam, in interdum risus velit non orci. Fusce non nisi at massa imperdiet bibendum. Fusce suscipit viverra risus. Etiam augue dolor, mattis eu, vehicula vel, venenatis vel, magna. Donec feugiat. Phasellus vitae eros. Nulla rhoncus luctus nibh. Donec vitae lacus. Etiam sit amet ipsum.
94
+
95
+ Ut venenatis magna at augue. Donec porttitor odio in libero. Curabitur interdum nulla vitae urna. In elit. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aenean pulvinar. Sed faucibus, nisl vel facilisis dapibus, est velit laoreet tortor, a auctor elit leo in turpis. Donec nunc lorem, imperdiet sit amet, volutpat quis, tincidunt id, leo. Suspendisse potenti. In hac habitasse platea dictumst. Suspendisse potenti. Nam facilisis dolor eu nisi. Fusce cursus. Nam porttitor orci quis lorem. In hac habitasse platea dictumst. Ut suscipit velit quis libero. Fusce fermentum, ante sed dictum posuere, ligula mauris feugiat nisi, id ullamcorper diam elit sed lectus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras fermentum volutpat dolor.
96
+
97
+ Donec velit. Proin auctor, lacus vitae tincidunt ultricies, nibh mauris viverra elit, et dictum pede dolor vel mi. Sed tortor urna, laoreet sed, ullamcorper a, volutpat at, felis. Cras gravida, leo a tincidunt sagittis, mauris leo condimentum justo, a molestie arcu neque eu erat. Phasellus sagittis faucibus sem. Proin ut tellus sit amet est pulvinar commodo. Nunc nibh nulla, adipiscing et, pellentesque et, bibendum sit amet, libero. Aenean a purus luctus augue venenatis sagittis. Aliquam auctor nunc ut ligula. Morbi lacinia. Mauris euismod leo eget tortor. Integer tristique, purus ac vulputate venenatis, mauris augue venenatis ipsum, eget consectetuer massa quam in elit. Vivamus leo neque, blandit eu, bibendum in, tempor ac, arcu. Curabitur non odio. Duis nec quam eget nunc varius mattis.
98
+
99
+ Sed ac eros sit amet sem imperdiet tincidunt. Curabitur metus felis, euismod sed, facilisis ut, condimentum ut, nibh. Nulla facilisi. Nulla quis odio. Donec eu metus sit amet odio interdum ultrices. Fusce rhoncus nunc non dui. Nullam varius magna quis turpis. Mauris at metus ac eros iaculis aliquet. Nulla rutrum, diam sit amet rhoncus accumsan, augue leo eleifend tortor, at facilisis massa neque non nisl. Cras et lorem vitae dui accumsan fermentum. Phasellus laoreet mauris in dolor. Ut turpis odio, rhoncus a, aliquam at, fermentum in, lacus. Nulla neque. Suspendisse turpis purus, pulvinar non, tincidunt nec, dapibus non, erat. In vulputate mi quis lectus mattis pulvinar. Morbi a sem. Aliquam ipsum lorem, semper eu, lobortis vel, iaculis a, orci.
100
+
101
+ Aenean dui. Fusce pretium sodales mauris. Aliquam hendrerit justo ac neque. Etiam neque. Donec sed odio blandit pede elementum convallis. Phasellus malesuada felis ac turpis. Aenean dignissim. Nam hendrerit, sem vitae porta molestie, arcu massa convallis eros, vestibulum laoreet tortor tellus ut dui. Quisque quis turpis. Nulla euismod enim in arcu. Nulla fermentum massa non nisl. Pellentesque neque neque, congue at, ornare nec, ullamcorper in, nisl. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae;
102
+
103
+ Donec sed urna. Nulla facilisi. Nunc risus augue, tincidunt nec, lobortis in, faucibus nec, lorem. Nunc turpis. Fusce magna metus, posuere a, dapibus at, ullamcorper a, nibh. Nulla facilisi. Integer dictum lobortis libero. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed vel nulla quis lorem faucibus tincidunt. Ut convallis, tellus vitae dapibus congue, massa quam rutrum neque, et molestie sapien urna quis odio. Praesent a lectus. Nunc viverra lacus nec pede.
104
+
105
+ Nulla gravida porttitor nulla. Suspendisse eget nisi vel sem pretium adipiscing. Sed euismod, neque non iaculis sollicitudin, sapien risus blandit tellus, id fermentum lectus nisi sed purus. Nulla facilisi. Curabitur urna diam, condimentum eget, euismod sed, scelerisque sit amet, dui. Cras ultrices turpis sed neque. Cras at nulla. Phasellus adipiscing adipiscing sapien. Vivamus risus. Suspendisse rhoncus. Morbi ullamcorper aliquam ligula. Aliquam quis justo eget lacus egestas sodales. Fusce leo arcu, cursus ut, porta vitae, tempus ut, lectus. Curabitur ut neque eu metus imperdiet fringilla. Pellentesque pretium nibh et tortor. Aliquam dictum, nisl eu suscipit molestie, ligula massa tempor dolor, sed commodo dui ligula ac nunc. Integer vestibulum pede rutrum sem. Nullam nec sem.
106
+
107
+ Vivamus rhoncus pulvinar nibh. Quisque nec est. Aenean lacus velit, pharetra eget, condimentum quis, commodo vitae, tellus. Ut vel purus. Nunc eros. In sodales, massa vel elementum interdum, sapien justo dictum nunc, vel rutrum dolor quam ut libero. Etiam lorem dui, varius at, rhoncus id, convallis a, augue. Donec porta. Etiam a leo in odio vehicula commodo. Morbi mauris.
@@ -0,0 +1,157 @@
1
+ require File.dirname(__FILE__) + '/test_harness'
2
+
3
+ module BasicPostHelper
4
+ class Post < ActiveRecord::Base
5
+ profanity_filter :title, :body
6
+ end
7
+ end
8
+
9
+ module DictionaryPostHelper
10
+ class Post < ActiveRecord::Base
11
+ profanity_filter :title, :body, :method => 'dictionary'
12
+ end
13
+ end
14
+
15
+ module VowelsPostHelper
16
+ class Post < ActiveRecord::Base
17
+ profanity_filter :title, :body, :method => 'vowels'
18
+ end
19
+ end
20
+
21
+ module HollowPostHelper
22
+ class Post < ActiveRecord::Base
23
+ profanity_filter :title, :body, :method => 'hollow'
24
+ end
25
+ end
26
+
27
+ class BasicProfanityFilterTest < Test::Unit::TestCase
28
+ include BasicPostHelper
29
+
30
+ def profane_post(opts={})
31
+ Post.new({:title => 'A Fucking Title', :body => "This is some f-u-c-k-i-n-g shitty-post by a fucking user"}.merge(opts))
32
+ end
33
+
34
+ def test_it_should_filter_specified_fields
35
+ p = profane_post
36
+ p.save
37
+ assert_equal 'A @#$% Title', p.title
38
+ assert_equal 'A @#$% Title', p.title_clean
39
+ assert_equal 'A Fucking Title', p.title_original
40
+ assert_equal 'This is some @#$% @#$%-post by a @#$% user', p.body
41
+ assert_equal 'This is some @#$% @#$%-post by a @#$% user', p.body_clean
42
+ assert_equal 'This is some f-u-c-k-i-n-g shitty-post by a fucking user', p.body_original
43
+ end
44
+
45
+ def test_it_should_handle_nil_fields_bug_9
46
+ p = Post.new({:title => nil, :body => nil})
47
+ p.save
48
+ assert_equal nil, p.title
49
+ assert_equal nil, p.body
50
+ end
51
+
52
+ def test_it_should_handle_blank_fields_bug_9
53
+ p = Post.new({:title => "", :body => ""})
54
+ p.save
55
+ assert_equal "", p.title
56
+ assert_equal "", p.body
57
+ end
58
+ end
59
+
60
+ class DictionaryProfanityFilterTest < Test::Unit::TestCase
61
+ include DictionaryPostHelper
62
+
63
+ def profane_post(opts={})
64
+ Post.new({:title => 'A Fucking Title', :body => "This is some f-u-c-k-i-n-g shitty-post by a fucking user"}.merge(opts))
65
+ end
66
+
67
+ def test_it_should_filter_specified_fields
68
+ p = profane_post
69
+ p.save
70
+ assert_equal 'A f*ck*ng Title', p.title
71
+ assert_equal 'A f*ck*ng Title', p.title_clean
72
+ assert_equal 'A Fucking Title', p.title_original
73
+ assert_equal 'This is some f*ck*ng sh*tty-post by a f*ck*ng user', p.body
74
+ assert_equal 'This is some f*ck*ng sh*tty-post by a f*ck*ng user', p.body_clean
75
+ assert_equal 'This is some f-u-c-k-i-n-g shitty-post by a fucking user', p.body_original
76
+ end
77
+
78
+ def test_it_should_handle_nil_fields_bug_9
79
+ p = Post.new({:title => nil, :body => nil})
80
+ p.save
81
+ assert_equal nil, p.title
82
+ assert_equal nil, p.body
83
+ end
84
+
85
+ def test_it_should_handle_blank_fields_bug_9
86
+ p = Post.new({:title => "", :body => ""})
87
+ p.save
88
+ assert_equal "", p.title
89
+ assert_equal "", p.body
90
+ end
91
+ end
92
+
93
+ class VowelsProfanityFilterTest < Test::Unit::TestCase
94
+ include VowelsPostHelper
95
+
96
+ def profane_post(opts={})
97
+ Post.new({:title => 'A Fucking Title', :body => "This is some f-u-c-k-i-n-g shitty-post by a fucking user"}.merge(opts))
98
+ end
99
+
100
+ def test_it_should_filter_specified_fields
101
+ p = profane_post
102
+ p.save
103
+ assert_equal 'A F*ck*ng Title', p.title
104
+ assert_equal 'A F*ck*ng Title', p.title_clean
105
+ assert_equal 'A Fucking Title', p.title_original
106
+ assert_equal 'This is some f*ck*ng sh*tty-post by a f*ck*ng user', p.body
107
+ assert_equal 'This is some f*ck*ng sh*tty-post by a f*ck*ng user', p.body_clean
108
+ assert_equal 'This is some f-u-c-k-i-n-g shitty-post by a fucking user', p.body_original
109
+ end
110
+
111
+ def test_it_should_handle_nil_fields_bug_9
112
+ p = Post.new({:title => nil, :body => nil})
113
+ p.save
114
+ assert_equal nil, p.title
115
+ assert_equal nil, p.body
116
+ end
117
+
118
+ def test_it_should_handle_blank_fields_bug_9
119
+ p = Post.new({:title => "", :body => ""})
120
+ p.save
121
+ assert_equal "", p.title
122
+ assert_equal "", p.body
123
+ end
124
+ end
125
+
126
+ class HollowProfanityFilterTest < Test::Unit::TestCase
127
+ include HollowPostHelper
128
+
129
+ def profane_post(opts={})
130
+ Post.new({:title => 'A Fucking Title', :body => "This is some f-u-c-k-i-n-g shitty-post by a fucking user"}.merge(opts))
131
+ end
132
+
133
+ def test_it_should_filter_specified_fields
134
+ p = profane_post
135
+ p.save
136
+ assert_equal 'A F*****g Title', p.title
137
+ assert_equal 'A F*****g Title', p.title_clean
138
+ assert_equal 'A Fucking Title', p.title_original
139
+ assert_equal 'This is some f*****g s****y-post by a f*****g user', p.body
140
+ assert_equal 'This is some f*****g s****y-post by a f*****g user', p.body_clean
141
+ assert_equal 'This is some f-u-c-k-i-n-g shitty-post by a fucking user', p.body_original
142
+ end
143
+
144
+ def test_it_should_handle_nil_fields_bug_9
145
+ p = Post.new({:title => nil, :body => nil})
146
+ p.save
147
+ assert_equal nil, p.title
148
+ assert_equal nil, p.body
149
+ end
150
+
151
+ def test_it_should_handle_blank_fields_bug_9
152
+ p = Post.new({:title => "", :body => ""})
153
+ p.save
154
+ assert_equal "", p.title
155
+ assert_equal "", p.body
156
+ end
157
+ end
@@ -0,0 +1,13 @@
1
+ ActiveRecord::Base.establish_connection({
2
+ :database => ":memory:",
3
+ :adapter => 'sqlite3',
4
+ :timeout => 500
5
+ })
6
+
7
+ ActiveRecord::Schema.define do
8
+ create_table :posts, :force => true do |t|
9
+ t.string :title
10
+ t.text :body
11
+ end
12
+ end
13
+
data/test/database.yml ADDED
@@ -0,0 +1,3 @@
1
+ test:
2
+ :adapter: sqlite3
3
+ :dbfile: ":memory:"
@@ -0,0 +1,142 @@
1
+ require File.dirname(__FILE__) + '/test_harness'
2
+
3
+ module BasicPostHelper
4
+ class Post < ActiveRecord::Base
5
+ profanity_filter! :title, :body
6
+ end
7
+ end
8
+
9
+ module DictionaryPostHelper
10
+ class Post < ActiveRecord::Base
11
+ profanity_filter! :title, :body, :method => 'dictionary'
12
+ end
13
+ end
14
+
15
+ module VowelsPostHelper
16
+ class Post < ActiveRecord::Base
17
+ profanity_filter! :title, :body, :method => 'vowels'
18
+ end
19
+ end
20
+
21
+ module HollowPostHelper
22
+ class Post < ActiveRecord::Base
23
+ profanity_filter! :title, :body, :method => 'hollow'
24
+ end
25
+ end
26
+
27
+
28
+ class BasicProfanityFilterTest < Test::Unit::TestCase
29
+ include BasicPostHelper
30
+
31
+ def profane_post(opts={})
32
+ Post.new({:title => 'A Fucking Title', :body => "This is some f-u-c-k-i-n-g shitty-post by a fucking user"}.merge(opts))
33
+ end
34
+
35
+ def test_it_should_filter_specified_fields
36
+ p = profane_post
37
+ p.save
38
+ assert_equal 'A @#$% Title', p.title
39
+ assert_equal 'This is some @#$% @#$%-post by a @#$% user', p.body
40
+ end
41
+
42
+ def test_it_should_handle_nil_fields_bug_9
43
+ p = Post.new({:title => nil, :body => nil})
44
+ p.save
45
+ assert_equal nil, p.title
46
+ assert_equal nil, p.body
47
+ end
48
+
49
+ def test_it_should_handle_blank_fields_bug_9
50
+ p = Post.new({:title => "", :body => ""})
51
+ p.save
52
+ assert_equal "", p.title
53
+ assert_equal "", p.body
54
+ end
55
+ end
56
+
57
+ class DictionaryProfanityFilterTest < Test::Unit::TestCase
58
+ include DictionaryPostHelper
59
+
60
+ def profane_post(opts={})
61
+ Post.new({:title => 'A Fucking Title', :body => "This is some f-u-c-k-i-n-g shitty-post by a fucking user"}.merge(opts))
62
+ end
63
+
64
+ def test_it_should_filter_specified_fields
65
+ p = profane_post
66
+ p.save
67
+ assert_equal 'A f*ck*ng Title', p.title
68
+ assert_equal 'This is some f*ck*ng sh*tty-post by a f*ck*ng user', p.body
69
+ end
70
+
71
+ def test_it_should_handle_nil_fields_bug_9
72
+ p = Post.new({:title => nil, :body => nil})
73
+ p.save
74
+ assert_equal nil, p.title
75
+ assert_equal nil, p.body
76
+ end
77
+
78
+ def test_it_should_handle_blank_fields_bug_9
79
+ p = Post.new({:title => "", :body => ""})
80
+ p.save
81
+ assert_equal "", p.title
82
+ assert_equal "", p.body
83
+ end
84
+ end
85
+
86
+ class VowelsProfanityFilterTest < Test::Unit::TestCase
87
+ include VowelsPostHelper
88
+
89
+ def profane_post(opts={})
90
+ Post.new({:title => 'A Fucking Title', :body => "This is some f-u-c-k-i-n-g shitty-post by a fucking user"}.merge(opts))
91
+ end
92
+
93
+ def test_it_should_filter_specified_fields
94
+ p = profane_post
95
+ p.save
96
+ assert_equal 'A F*ck*ng Title', p.title
97
+ assert_equal 'This is some f*ck*ng sh*tty-post by a f*ck*ng user', p.body
98
+ end
99
+
100
+ def test_it_should_handle_nil_fields_bug_9
101
+ p = Post.new({:title => nil, :body => nil})
102
+ p.save
103
+ assert_equal nil, p.title
104
+ assert_equal nil, p.body
105
+ end
106
+
107
+ def test_it_should_handle_blank_fields_bug_9
108
+ p = Post.new({:title => "", :body => ""})
109
+ p.save
110
+ assert_equal "", p.title
111
+ assert_equal "", p.body
112
+ end
113
+ end
114
+
115
+ class HollowProfanityFilterTest < Test::Unit::TestCase
116
+ include HollowPostHelper
117
+
118
+ def profane_post(opts={})
119
+ Post.new({:title => 'A Fucking Title', :body => "This is some f-u-c-k-i-n-g shitty-post by a fucking user"}.merge(opts))
120
+ end
121
+
122
+ def test_it_should_filter_specified_fields
123
+ p = profane_post
124
+ p.save
125
+ assert_equal 'A F*****g Title', p.title
126
+ assert_equal 'This is some f*****g s****y-post by a f*****g user', p.body
127
+ end
128
+
129
+ def test_it_should_handle_nil_fields_bug_9
130
+ p = Post.new({:title => nil, :body => nil})
131
+ p.save
132
+ assert_equal nil, p.title
133
+ assert_equal nil, p.body
134
+ end
135
+
136
+ def test_it_should_handle_blank_fields_bug_9
137
+ p = Post.new({:title => "", :body => ""})
138
+ p.save
139
+ assert_equal "", p.title
140
+ assert_equal "", p.body
141
+ end
142
+ end
@@ -0,0 +1,134 @@
1
+ require 'test/unit'
2
+ require 'rubygems'
3
+ require 'yaml'
4
+
5
+ require File.dirname(__FILE__) + '/../lib/profanity_filter'
6
+
7
+ class BasicProfanityFilterTest < Test::Unit::TestCase
8
+ def test_basic_profanity_filter_does_not_modify_clean_words
9
+ assert_equal 'happy', ProfanityFilter::Base.clean('happy')
10
+ end
11
+
12
+ def test_basic_profanity_filter_does_not_modify_whitespace
13
+ assert_equal 'hello world', ProfanityFilter::Base.clean('hello world')
14
+ assert_equal "hello \t world", ProfanityFilter::Base.clean("hello \t world")
15
+ assert_equal "hello \n world", ProfanityFilter::Base.clean("hello \n world")
16
+ end
17
+
18
+ def test_basic_profanity_filter_does_not_modify_special_characters
19
+ assert_equal 'happy @#$%', ProfanityFilter::Base.clean('happy fuck')
20
+ assert_equal 'happy\'s', ProfanityFilter::Base.clean('happy\'s')
21
+ assert_equal '@#$%\'s', ProfanityFilter::Base.clean('fuck\'s')
22
+ assert_equal '@#$%?!', ProfanityFilter::Base.clean('fuck?!')
23
+ end
24
+
25
+ def test_basic_profanity_filter_replaces_profane_words
26
+ assert_equal '@#$%', ProfanityFilter::Base.clean('fuck')
27
+ end
28
+
29
+ def test_basic_profanity_filter_replaces_punctuation_spaced_profane_words
30
+ assert_equal '@#$%', ProfanityFilter::Base.clean('f-u-c-k')
31
+ assert_equal '@#$%', ProfanityFilter::Base.clean('f.u.c.k')
32
+ assert_equal 'happy-@#$%', ProfanityFilter::Base.clean('happy-fuck')
33
+ end
34
+
35
+ def test_knows_when_text_is_not_profane
36
+ assert !ProfanityFilter::Base.profane?('happy')
37
+ end
38
+ def test_knows_when_text_is_profane
39
+ assert ProfanityFilter::Base.profane?('fuck')
40
+ end
41
+ def test_knows_nil_is_not_profane
42
+ assert !ProfanityFilter::Base.profane?(nil)
43
+ end
44
+ end
45
+
46
+ class DictionaryProfanityFilterTest < Test::Unit::TestCase
47
+ def test_dictionary_profanity_filter_does_not_modify_clean_words
48
+ assert_equal 'happy', ProfanityFilter::Base.clean('happy', 'dictionary')
49
+ end
50
+
51
+ def test_dictionary_profanity_filter_does_not_modify_whitespace
52
+ assert_equal 'hello world', ProfanityFilter::Base.clean('hello world', 'dictionary')
53
+ assert_equal "hello \t world", ProfanityFilter::Base.clean("hello \t world", 'dictionary')
54
+ assert_equal "hello \n world", ProfanityFilter::Base.clean("hello \n world", 'dictionary')
55
+ end
56
+
57
+ def test_dictionary_profanity_filter_does_not_modify_special_characters
58
+ assert_equal 'happy f*ck', ProfanityFilter::Base.clean('happy fuck', 'dictionary')
59
+ assert_equal 'happy\'s', ProfanityFilter::Base.clean('happy\'s', 'dictionary')
60
+ assert_equal 'f*ck\'s', ProfanityFilter::Base.clean('fuck\'s', 'dictionary')
61
+ assert_equal 'f*ck?!', ProfanityFilter::Base.clean('fuck?!', 'dictionary')
62
+ end
63
+
64
+ def test_dictionary_profanity_filter_replaces_profane_words
65
+ assert_equal 'f*ck', ProfanityFilter::Base.clean('fuck', 'dictionary')
66
+ end
67
+
68
+ def test_dictionary_profanity_filter_replaces_punctuation_spaced_profane_words
69
+ assert_equal 'f*ck', ProfanityFilter::Base.clean('f-u-c-k', 'dictionary')
70
+ assert_equal 'f*ck', ProfanityFilter::Base.clean('f.u.c.k', 'dictionary')
71
+ assert_equal 'happy-f*ck', ProfanityFilter::Base.clean('happy-fuck', 'dictionary')
72
+ end
73
+ end
74
+
75
+
76
+ class VowelsProfanityFilterTest < Test::Unit::TestCase
77
+ def test_vowels_profanity_filter_does_not_modify_clean_words
78
+ assert_equal 'happy', ProfanityFilter::Base.clean('happy', 'vowels')
79
+ end
80
+
81
+ def test_vowels_profanity_filter_does_not_modify_whitespace
82
+ assert_equal 'hello world', ProfanityFilter::Base.clean('hello world', 'vowels')
83
+ assert_equal "hello \t world", ProfanityFilter::Base.clean("hello \t world", 'vowels')
84
+ assert_equal "hello \n world", ProfanityFilter::Base.clean("hello \n world", 'vowels')
85
+ end
86
+
87
+ def test_vowels_profanity_filter_does_not_modify_special_characters
88
+ assert_equal 'happy f*ck', ProfanityFilter::Base.clean('happy fuck', 'vowels')
89
+ assert_equal 'happy\'s', ProfanityFilter::Base.clean('happy\'s', 'vowels')
90
+ assert_equal 'f*ck\'s', ProfanityFilter::Base.clean('fuck\'s', 'vowels')
91
+ assert_equal 'f*ck?!', ProfanityFilter::Base.clean('fuck?!', 'vowels')
92
+ end
93
+
94
+ def test_vowels_profanity_filter_replaces_profane_words
95
+ assert_equal 'f*ck', ProfanityFilter::Base.clean('fuck', 'vowels')
96
+ assert_equal 'F*CK', ProfanityFilter::Base.clean('FUCK', 'vowels')
97
+ end
98
+
99
+ def test_vowels_profanity_filter_replaces_punctuation_spaced_profane_words
100
+ assert_equal 'f*ck', ProfanityFilter::Base.clean('f-u-c-k', 'vowels')
101
+ assert_equal 'f*ck', ProfanityFilter::Base.clean('f.u.c.k', 'vowels')
102
+ assert_equal 'happy-f*ck', ProfanityFilter::Base.clean('happy-fuck', 'vowels')
103
+ end
104
+ end
105
+
106
+ class HollowProfanityFilterTest < Test::Unit::TestCase
107
+ def test_hollow_profanity_filter_does_not_modify_clean_words
108
+ assert_equal 'happy', ProfanityFilter::Base.clean('happy', 'hollow')
109
+ end
110
+
111
+ def test_hollow_profanity_filter_does_not_modify_whitespace
112
+ assert_equal 'hello world', ProfanityFilter::Base.clean('hello world', 'hollow')
113
+ assert_equal "hello \t world", ProfanityFilter::Base.clean("hello \t world", 'hollow')
114
+ assert_equal "hello \n world", ProfanityFilter::Base.clean("hello \n world", 'hollow')
115
+ end
116
+
117
+ def test_hollow_profanity_filter_does_not_modify_special_characters
118
+ assert_equal 'happy f**k', ProfanityFilter::Base.clean('happy fuck', 'hollow')
119
+ assert_equal 'happy\'s', ProfanityFilter::Base.clean('happy\'s', 'hollow')
120
+ assert_equal 'f**k\'s', ProfanityFilter::Base.clean('fuck\'s', 'hollow')
121
+ assert_equal 'f**k?!', ProfanityFilter::Base.clean('fuck?!', 'hollow')
122
+ end
123
+
124
+ def test_hollow_profanity_filter_replaces_profane_words
125
+ assert_equal 'f**k', ProfanityFilter::Base.clean('fuck', 'hollow')
126
+ assert_equal 'F**K', ProfanityFilter::Base.clean('FUCK', 'hollow')
127
+ end
128
+
129
+ def test_hollow_profanity_filter_replaces_punctuation_spaced_profane_words
130
+ assert_equal 'f**k', ProfanityFilter::Base.clean('f-u-c-k', 'hollow')
131
+ assert_equal 'f**k', ProfanityFilter::Base.clean('f.u.c.k', 'hollow')
132
+ assert_equal 'happy-f**k', ProfanityFilter::Base.clean('happy-fuck', 'hollow')
133
+ end
134
+ end
data/test/schema.rb ADDED
@@ -0,0 +1,5 @@
1
+ ActiveRecord::Schema.define(:version => 0) do
2
+ create_table :posts, :force => true do |t|
3
+ t.string :title, :body
4
+ end
5
+ end
@@ -0,0 +1,11 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'yaml'
4
+ require 'active_record'
5
+ require 'active_support/all'
6
+
7
+ require File.dirname(__FILE__) + '/../lib/profanity_filter'
8
+ require File.dirname(__FILE__) + '/connection_and_schema'
9
+
10
+ ActiveRecord::Base.send(:include, ProfanityFilter)
11
+