Faits :
A.
Le 29 septembre 2011, B._ Sàrl a commandé à A._ SA une étiqueteuse LCA Compact et un appareil de codage pour le montant de 9'700 fr. au total, installation comprise. Un acompte de 2'000 fr. a été versé. Parce qu'un délai de deux semaines était nécessaire pour la livraison des appareils commandés, le fournisseur a mis à disposition de la cliente une étiqueteuse de remplacement. En dépit de travaux de correction des défauts et de réglage exécutés par les techniciens du fournisseur, cet appareil n'a pas donné satisfaction.
La cliente a mis fin au contrat par courrier du 19 octobre 2011; elle déclarait tenir le matériel prêté à disposition du fournisseur et elle réclamait la restitution de son acompte. Par lettre du 26 octobre 2011, le fournisseur a rappelé les termes du contrat conclu; il avertissait sa cliente que si elle persistait dans sa volonté d'annulation du contrat, elle lui réclamerait une indemnité de 4'220 fr., plus 40 fr. par jour pour « l'appareil de location » ( Mietgerät ) dès le 28 octobre 2011.
Le 3 novembre 2011, la cliente a confirmé sa volonté de mettre fin au contrat. Elle alléguait n'avoir pas subi que de simples désagréments; sa production avait dû être interrompue en raison des défaillances de l'étiqueteuse de remplacement, alors qu'elle livrait plus de deux mille plats cuisinés par jour et que cette activité exigeait un appareil en état de marche. Elle réclamait aussi la restitution de l'acompte versé.
Par courrier de son mandataire du 9 décembre 2011, le fournisseur a répété le point de vue exprimé dans sa lettre du 26 octobre 2011 et indiqué qu'il retiendrait pour ses frais l'acompte de 2'000 fr. versé par la cliente, auquel s'ajoutait un montant arrondi à 2'000 fr. pour la mise à disposition de l'étiqueteuse de remplacement.
B.
Le 31 juillet 2012, A._ AG a ouvert action contre B._ Sàrl devant le Tribunal civil des Montagnes neuchâteloises et du Val de Ruz. La défenderesse devait être condamnée à payer 9'700 fr. au titre du prix de vente convenu, et la demanderesse offrait de livrer le matériel commandé. Sous menace de l'amende prévue par l'art. 292 CP, la défenderesse devait être condamnée à restituer le matériel de remplacement dans les dix jours de l'entrée en force du jugement. Elle devait être condamnée à payer 8'080 fr. à titre d'indemnité d'utilisation de ce matériel, augmentés de 40 fr. par jour à compter du 1er mars 2012 et jusqu'à la restitution. Les sommes réclamées devaient porter intérêts au taux de 5% par an dès le 30 septembre 2011.
La défenderesse a conclu au rejet de l'action. Elle a pris des conclusions reconventionnelles: la demanderesse devait être condamnée à payer 12'000 fr. à titre de restitution de l'acompte et dommages-intérêts, avec intérêts au taux de 5% par an dès le 29 octobre 2011; la défenderesse offrait de restituer le matériel de remplacement.
La demanderesse a amplifié ses conclusions pour réclamer aussi le remboursement de frais d'avocat avant procès, au total de 5'625 francs.
Le tribunal s'est prononcé le 11 décembre 2013. Il a rejeté l'action principale; accueillant partiellement l'action reconventionnelle, il a condamné la défenderesse à restituer à la demanderesse 2'000 fr. avec intérêts au taux de 5% par an dès le 21 octobre 2011.
La demanderesse a appelé du jugement. Le matériel de remplacement avait été restitué le 29 août 2013 et la demanderesse réclamait désormais 27'960 fr. à titre d'indemnité pour son usage prolongé. Pour le surplus, ses conclusions d'appel correspondaient à celles précédemment articulées.
La Cour d'appel civile du Tribunal cantonal du canton de Neuchâtel a statué le 6 novembre 2014; elle a rejeté l'appel.
C.
Agissant par la voie du recours en matière civile, la demanderesse requiert le Tribunal fédéral de condamner la défenderesse à payer 9'700 fr. au titre du prix de vente convenu, sous déduction de 2'000 fr. au titre de l'acompte reçu; elle offre la livraison du matériel commandé. La défenderesse doit aussi être condamnée à payer 27'960 fr. à titre d'indemnité pour l'usage prolongé du matériel de remplacement. Les sommes réclamées doivent porter intérêts au taux de 5% par an dès le 30 septembre 2011. Des conclusions subsidiaires tendent à l'annulation de l'arrêt de la Cour d'appel et au renvoi de la cause à cette autorité pour nouvelle décision.
La défenderesse conclut au rejet du recours.
Considérant en droit :
1.
Les conditions de recevabilité du recours en matière civile sont satisfaites, notamment à raison de la valeur litigieuse.
2.
Selon l'arrêt de la Cour d'appel, la défenderesse n'a pas prouvé que sa cocontractante n'eût pas été en mesure de lui livrer une étiqueteuse telle que commandée et exempte de défauts. Le 19 octobre 2011, la défenderesse ne se trouvait donc pas en droit de résoudre le contrat. Parce qu'elle-même refusait catégoriquement de recevoir la chose vendue, l'autre partie n'était pas tenue de lui fixer un ultime délai d'exécution conformément à l'art. 107 al. 1 CO; elle était d'emblée autorisée à opter entre les voies qui s'offraient à elle selon l'art. 107 al. 2 CO. Elle l'a fait le 26 octobre 2011, en réclamant la somme de 4'220 fr. pour les travaux effectués, le matériel fourni et une perte de bénéfice; elle a confirmé ce choix en exigeant un montant arrondi à 4'000 fr. par courrier de son mandataire du 9 décembre 2011. L'option ainsi exercée, selon laquelle la demanderesse n'exigeait plus le maintien intégral du contrat avec paiement du prix de vente convenu, était un acte formateur irrévocable, de sorte que cette partie ne pouvait plus réclamer le paiement du prix de la machine en cause mais seulement des dommages-intérêts pour inexécution du contrat. Or, elle n'avait pas allégué précisément, et moins encore prouvé le dommage à réparer.
3.
A l'encontre de ce jugement, la demanderesse conteste avoir déclaré la résolution du contrat dans sa lettre du 26 octobre 2011, confirmée par celle de son mandataire du 9 décembre 2011; elle n'a prétendument pas manifesté la volonté inconditionnelle de se départir du contrat et la déclaration n'avait donc pas d'effet au regard de l'art. 107 al. 2 CO.
Lorsque l'une des parties à un contrat bilatéral est en demeure, l'autre partie peut lui fixer un délai convenable pour s'exécuter (art. 107 al. 1 CO). Si l'exécution n'est pas intervenue à l'expiration de ce délai, le droit de la demander et d'actionner en dommages-intérêts pour cause de retard peut toujours être exercé ; cependant, le créancier qui en fait la déclaration immédiate peut renoncer à ce droit et réclamer des dommages-intérêts pour cause d'inexécution ou se départir du contrat (art. 107 al. 2 CO). En vertu de l'art. 108 ch. 1 CO, la fixation d'un délai n'est pas nécessaire lorsqu'il ressort de l'attitude du débiteur que cette mesure serait sans effet.
La réalisation des conditions de l'art. 107 CO confère au créancier le droit formateur de décider du sort de l'obligation en souffrance, voire du contrat ; ce choix s'exerce par une déclaration de volonté sujette à réception qui - comme tout acte formateur - est unilatérale et, en principe, inconditionnelle et irrévocable (Luc Thévenoz, in Commentaire romand, 2e éd., n° 16 ad art. 107 CO; ATF 123 III 16 consid. 4b p. 22).
La déclaration de volonté du créancier qui choisit l'une des options offertes par l'art. 107 al. 2 CO doit être interprétée selon le principe de la confiance (même arrêt). Il s'agit de rechercher en fonction de l'ensemble des circonstances comment la déclaration pouvait être comprise par le débiteur de bonne foi. Le principe de la confiance permet d'imputer à une partie le sens objectif de sa déclaration ou de son comportement, même s'il ne correspond pas à sa volonté intime ; l'application du principe de la confiance est une question de droit (ATF 135 III 410 consid. 3.2 p. 412 s.).
Il est constant que la défenderesse était en demeure et refusait catégoriquement de recevoir la chose vendue, de sorte que sa cocontractante était en droit d'opter, sans avoir à fixer un délai d'exécution selon l'art. 107 al. 1 CO, pour l'une des voies qui s'offraient à elle selon l'art. 107 al. 2 CO. C'est ce qu'elle a fait par courrier du 26 octobre 2011, dont la portée a encore été confirmée par le courrier de son mandataire du 9 décembre 2011. Elle annonçait les prétentions qu'elle élèverait, certes, « si » la destinataire persistait dans son refus d'exécuter le contrat. Il était cependant manifeste que la défenderesse persisterait dans son attitude; la réserve ou condition qui apparaissait effectivement dans le libellé de la déclaration n'était donc pas sérieuse. Cette déclaration pouvait et devait, de bonne foi, être comprise en ce sens que la demanderesse, qui n'exigeait plus le paiement du prix de vente convenu, renonçait à l'exécution du contrat. La demanderesse a ainsi exercé un droit formateur et ce choix est irrévocable. Elle ne saurait se prévaloir de la réserve inconsistante exprimée dans son courrier du 26 octobre 2011 pour conserver ou faire renaître le droit de demander l'exécution du contrat.
4.
La Cour d'appel refuse d'allouer un loyer ou une indemnité en contrepartie de l'usage de l'appareil que la demanderesse a remis provisoirement à sa cliente. Selon son jugement, les parties n'ont pas convenu d'un loyer. Le dommage éventuellement subi par la demanderesse, à réparer par une indemnité, correspondait à la perte de gain consécutive à l'impossibilité de louer l'appareil à un tiers. En se référant sans plus de précisions « aux prix [...] pratiqués par les entreprises concurrentes », la demanderesse n'a pas prouvé cette perte de gain.
La demanderesse soutient que les précédents juges auraient dû retenir la conclusion d'un contrat de bail à loyer pour l'appareil remis provisoirement. Selon son exposé, la gratuité (« Es werden keine Mietkosten verrechnet ») n'a été promise que jusqu'au terme prévu pour la livraison de l'étiqueteuse commandée. L'appareil a toujours été désigné par le terme « Mietgerät ». La renonciation au loyer a pris fin aussitôt que la demanderesse a offert de livrer la chose vendue, soit à compter du 30 septembre 2011. Plus tard, les rapports des parties étaient soumis aux règles du bail à loyer selon les art. 253 ss CO, la défenderesse n'ayant pas contesté les termes des conditions de la location rappelées par la demanderesse dans ses courriers.
5.
Il est établi en fait que parce que l'étiqueteuse LCA Compact commandée le 29 septembre 2011 ne pouvait pas être livrée aussitôt, la demanderesse a mis gratuitement à disposition de la défenderesse une étiqueteuse de remplacement jusqu'à ce que l'appareil commandé pût être livré. Il est vrai que dans les divers courriers de la demanderesse, cet appareil a été appelé « Mietgerät »et que la gratuité de la mise à disposition a été exprimée par la formule « Es werden keine Mietkosten verrechnet ». Cela n'implique cependant pas qu'après une certaine date, le prêt à usage consenti à la défenderesse se soit transformé en un contrat de bail à loyer. On cherche en vain des manifestations de volonté concordantes des parties sur ce point; la demanderesse ne peut au contraire se référer qu'à ses propres et unilatérales déclarations.
La défenderesse n'a censément pas réagi à l'utilisation des termes « Mietgerät » et « Miete », et elle n'a pas non plus discuté les montants exigés à titre de loyer dans les lettres du 26 octobre et du 9 décembre 2011. L'auteur de ces écrits ne peut pas faire valoir un accord « par actes concluants » sur un contrat de bail à loyer simplement parce que la destinataire, selon l'acte de recours, « connaissant les conditions de la mise à disposition de la machine, a conservé et utilisé celle-ci ». La conclusion d'un bail « par actes concluants » supposerait que la défenderesse ait payé le loyer demandé, ce qu'elle n'a pas fait. Selon la jurisprudence, la facture détaillée d'un entrepreneur ne peut pas être tenue pour tacitement acceptée parce que son destinataire s'abstient de la contester durant quelques mois. Assimiler une facture à une lettre de confirmation entre commerçants, nécessitant une réaction en cas de désaccord, procéderait d'une interprétation trop extensive de l'art. 6 CO (ATF 88 II 89 consid. 3c). Il serait contraire à l'expérience générale de la vie de présumer que le destinataire d'une facture soit disposé à en payer le montant. Celui qui reçoit une facture quelconque ne saurait être astreint à protester sans délai dès réception, sans quoi il serait censé avoir accepté de payer le prix demandé. L'art. 6 CO n'est pas pertinent en pareil cas; le silence gardé à réception d'un relevé de compte ou d'une facture inexacte ou mal fondée ne vaut donc pas acceptation (ATF 112 II 500 c. 3b).
6.
A titre subsidiaire, la demanderesse prétend à la réparation du dommage subi par suite d'une utilisation de l'étiqueteuse de remplacement au delà du terme convenu. Elle soutient que si la défenderesse la lui avait restituée dès le moment où l'appareil commandé pouvait être livré, conformément à leur accord, la demanderesse aurait pu l'utiliser ou la mettre à la disposition d'autres clients contre rémunération. Elle réclame une indemnité forfaitaire au montant de 40 fr. par jour. La défenderesse a censément accepté ce tarif par actes concluants, en ne s'y opposant pas après qu'il lui avait été annoncé dans la lettre du 26 octobre 2011.
Ici également, la conclusion d'une convention d'indemnisation forfaitaire (cf. ATF 109 II 462 consid. 4a p. 468) ne résulte pas du simple silence de la défenderesse. La demanderesse ne peut réclamer des dommages-intérêts que sur la base de l'art. 97 CO, à raison du dommage causé, le cas échéant, par la restitution tardive de l'appareil de remplacement.
La notion juridique du dommage est commune aux responsabilités contractuelle et délictuelle (art. 99 al. 3 CO; ATF 87 II 290 consid. 4a p. 291). Consistant dans la diminution involontaire de la fortune nette, le dommage correspond à la différence entre le montant actuel du patrimoine du lésé et le montant que ce même patrimoine aurait si l'événement dommageable - ou la violation du contrat - ne s'était pas produit ; il peut survenir sous la forme d'une diminution de l'actif, d'une augmentation du passif, d'une non-augmentation de l'actif ou d'une non-diminution du passif (ATF 133 III 462 consid. 4.4.2 p. 471; 132 III 359 consid. 4 p. 366; 132 III 321 consid. 2.2.1).
Selon l'art. 42 al. 1 CO, la preuve d'un dommage incombe à celui qui en demande réparation. L'art. 42 al. 2 CO prévoit que si le montant exact du dommage ne peut pas être établi, le juge le détermine équitablement, en considération du cours ordinaire des choses et des mesures prises par la partie lésée. Cette dernière disposition tend à instaurer une preuve facilitée en faveur du lésé; néanmoins, elle ne le libère pas de la charge de fournir au juge, dans la mesure où cela est possible et où on peut l'attendre de lui, tous les éléments de fait qui constituent des indices de l'existence du dommage et qui permettent ou facilitent son estimation; elle n'accorde pas au lésé la faculté de formuler sans indications plus précises des prétentions en dommages-intérêts de n'importe quelle ampleur (ATF 131 III 360 consid. 5.1 p. 363/364; voir aussi ATF 133 III 462 consid. 4.4.2 p. 471).
Si, dans le procès, le lésé ne satisfait pas entièrement à son devoir de fournir des éléments utiles à l'estimation, l'une des conditions dont dépend l'application de l'art. 42 al. 2 CO n'est pas réalisée, alors même que, le cas échéant, l'existence d'un dommage est certaine. Le lésé est alors déchu du bénéfice de cette disposition; la preuve du dommage n'est pas apportée et, en conséquence, conformément au principe de l'art. 8 CC (cf. ATF 126 III 189 consid. 2b p. 191/192), le juge doit refuser la réparation (arrêt 4A_481/2012 du 14 décembre 2012, consid. 4, SJ 2013 I 487).
En l'espèce, pour apporter la preuve d'un dommage, la demanderesse aurait dû alléguer et prouver que si l'étiqueteuse de remplacement lui avait été rendue, elle aurait pu en retirer un gain en la louant à un tiers. Or, ni cette possibilité de location ni le montant du gain prétendument manqué n'ont été établis car la demanderesse s'est bornée à faire état, sans plus de détails et sans offres de preuve, des « prix pratiqués par les entreprises concurrentes ». Elle invoque inutilement les principes applicables à la preuve d'un lien de causalité hypothétique car c'est la preuve d'un dommage qui est présentement en cause.
7.
Le recours se révèle privé de fondement, ce qui conduit à son rejet. A titre de partie qui succombe, son auteur doit acquitter l'émolument à percevoir par le Tribunal fédéral et les dépens auxquels l'autre partie peut prétendre.
Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
La demanderesse acquittera un émolument judiciaire de 2'000 francs.
3.
La demanderesse versera une indemnité de 2'500 fr. à la défenderesse, à titre de dépens.
4.
Le présent arrêt est communiqué aux parties et au Tribunal cantonal du canton de Neuchâtel.
Lausanne, le 1er avril 2015
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La présidente : Kiss
Le greffier : Thélin